Получение "per_page должно быть между 1 (включительно) и 100 (включительно)" при запросе категорий в WooCommerce - PullRequest
1 голос
/ 27 апреля 2020

https://example.com/wp-json/wc/v2/products/categories/?per_page=150&consumer_key=ck_991580c4b11ae619bef763195f67c311aa2bc&consumer_secret=cs_07cacbb022086cf185beb0145fe0e5db01c57&currentLanguage=en

   {
        "code": "rest_invalid_param",
        "message": "Invalid parameter(s): per_page",
        "data": {
            "status": 400,
            "params": {
                "per_page": "per_page must be between 1 (inclusive) and 100 (inclusive)"
            }
        }
    }

Я пытаюсь получить 150 категорий из woo-commerce с помощью API wp JSON. Я не могу сделать это 100. Есть ли способ исправить это с помощью хуков.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Глядя на документацию здесь: https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/

Похоже, что параметр per_page может иметь любое целочисленное значение от 1 до 100. Таким образом, ответ на ваш вопрос НЕТ

enter image description here

Если вы хотите использовать жесткий код

/**
 * Retrieves the query params for the collections.
 *
 * @since 4.7.0
 *
 * @return array Query parameters for the collection.
 */
public function get_collection_params() {
    return array(
        'context'  => $this->get_context_param(),
        'page'     => array(
            'description'       => __( 'Current page of the collection.' ),
            'type'              => 'integer',
            'default'           => 1,
            'sanitize_callback' => 'absint',
            'validate_callback' => 'rest_validate_request_arg',
            'minimum'           => 1,
        ),
        'per_page' => array(
            'description'       => __( 'Maximum number of items to be returned in result set.' ),
            'type'              => 'integer',
            'default'           => 10,
            'minimum'           => 1,
            'maximum'           => 1000,
            'sanitize_callback' => 'absint',
            'validate_callback' => 'rest_validate_request_arg',
        ),
        'search'   => array(
            'description'       => __( 'Limit results to those matching a string.' ),
            'type'              => 'string',
            'sanitize_callback' => 'sanitize_text_field',
            'validate_callback' => 'rest_validate_request_arg',
        ),
    );
}

/ wp-includes / rest-api / endpoints /class-wp-rest-controller.php # L381

0 голосов
/ 27 апреля 2020
add_action( 'rest_product_query', 'product_override_per_page' );

/* 
 * params is the query array passed to WP_Query
*/
function product_override_per_page( $params ) {
    if ( isset( $params ) AND isset( $params[ 'posts_per_page' ] ) ) {
        $params[ 'posts_per_page' ] = "200";
    }

return $params;
}

Не пропустите, чтобы заменить клиента вашим типом сообщения в крючке

...