array( 'type' => 'array', 'items' => array( 'type' => 'integer' ), 'minItems' => 1, 'description' => __( 'Redirection ids. Find them with rank-math/list-redirections.', 'acrossai-abilities-manager' ), ), 'action' => array( 'type' => 'string', 'enum' => array( 'activate', 'deactivate', 'trash', 'restore' ), 'description' => __( 'Transition to apply. All four are reversible.', 'acrossai-abilities-manager' ), ), ); } protected function output_properties(): array { return array( 'ids' => array( 'type' => 'array' ), 'action' => array( 'type' => 'string' ), 'status' => array( 'type' => 'string' ), 'changed' => array( 'type' => 'integer' ), ); } protected function required_input(): array { return array( 'ids', 'action' ); } protected function annotations(): array { return array( 'readonly' => false, 'destructive' => false, 'idempotent' => true ); } /** * @param array $input * @return array|WP_Error */ protected function run( array $input ) { if ( ! isset( $input['ids'] ) || ! is_array( $input['ids'] ) ) { return new WP_Error( 'invalid_input', __( 'ids must be a list of redirection ids.', 'acrossai-abilities-manager' ) ); } $result = Redirections_Repository::change_status( $input['ids'], isset( $input['action'] ) ? sanitize_key( (string) $input['action'] ) : '' ); if ( is_wp_error( $result ) ) { return $result; } $result['message'] = sprintf( /* translators: 1: number of redirections changed, 2: resulting status */ _n( 'Set %1$d redirection to "%2$s".', 'Set %1$d redirections to "%2$s".', $result['changed'], 'acrossai-abilities-manager' ), $result['changed'], $result['status'] ); return $result; } }