Ceci est une question simple concernant Wordpress API/wp-json. Je recherche des données filtrées avec une certaine catégorie dans Wordpress. Mes questions sont de savoir comment puis-je contrôler la quantité de résultat qui est retourné de mon Get request ... Le retour par défaut semble renvoyer environ 11 résultats les plus récents. Existe-t-il un moyen de le faire renvoyer seulement 1 (le plus récent), ou comme 100 messages. Quel est le montant minimum et maximum que je peux retourner. Et quoi est la syntaxe. C'est la requête par défaut que j'ai:
http://thisismywebsitewherewordpresslives.com/wp-json/posts?fiter[category_name]=Some Category Name I want to query&filter[order]=ASC
Si vous utilisez la version 2 de l'API WordPress REST, il semble que la méthode actuelle de contrôle du nombre de résultats renvoyés soit:
website.com/wp-json/wp/v2/posts/?per_page=100
Remplacez 100 par le nombre souhaité.
Si vous utilisez un type de publication personnalisé, remplacez les publications par le type de publication personnalisé. Assurez-vous également de définir 'show_in_rest' => true
lors de la configuration du type de publication personnalisé.
Ajoutez le paramètre de filtre [posts_per_page] à la requête pour limiter le nombre de résultats renvoyés par l'API.
http://thisismywebsitewherewordpresslives.com/wp-json/posts?filter[posts_per_page]=2&fiter[category_name]=Some Category Name I want to query&filter[order]=ASC
La requête ci-dessus ne devrait renvoyer que 2 résultats. La liste des paramètres de requête est présente ici https://github.com/WP-API/WP-API/blob/master/docs/routes/routes.md#retrieve-posts
Comme un autre l'a dit: ( v2)
http://example.com/wp-json/wp/v2/posts?per_page=10
Mais si vous voulez obtenir plus les prochains messages : ( paged)
http://example.com/wp-json/wp/v2/posts?per_page=10&page=2
Documents: http://v2.wp-api.org/reference/posts/ (Faites défiler jusqu'à Liste des messages )
Ma recommandation ci-dessus n'est plus correcte. Vous voudrez maintenant utiliser:
website.com/wp-json/wp/v2/posts/?filter[posts_per_page]=100
Modifiez le nombre pour récupérer plus ou moins de messages. Remplacez "publications" par votre type de publication personnalisé si nécessaire et assurez-vous de définir 'show_in_rest' => true
lors de l'enregistrement du type de publication personnalisé.
Remarque: Bien que la définition de la valeur posts_per_page sur -1 ait fonctionné dans les versions bêta antérieures du plugin (2.0-beta13.1), il ne semble pas fonctionner dans les versions les plus récentes. Il semble maintenant que vous devez définir une valeur dans le point de terminaison.
Actuellement, l'API impose un retour de limite de 99 postes. Le max est donc website.com/wp-json/wp/v2/posts/?&per_page=99
, cela dit, il semble que vous pouvez modifier pour autoriser des messages supplémentaires. Il y a une discussion à ce sujet ici: https://github.com/WP-API/WP-API/issues/2914
Vous pouvez changer:
add_action( 'rest_YOUR_CPT_params', function($params){
if ( isset( $params ) AND isset( $params[ 'per_page' ] ) ) {
$params[ 'per_page' ][ 'maximum' ] = 500;
}
return $params;
});
Et dans l'url d'extraction, ajoutez ?per_page=500
Exemple: https://domain.pl/wp-json/wp/v2/books?per_page=500
Je suis surpris que personne n'ait mentionné l'utilisation des filtres natifs WordPress a créé pour des situations exactement comme celle-ci.
J'ai pu obtenir le retour d'un nombre souhaité de messages par défaut, tout en autorisant le $_GET['per_page']
param pour fonctionner comme ceci:
/**
* Default to all posts being returned rather than the default 10 posts per
* page. Also, do not get in the way of the native $_GET['per_page'] setting.
* @param {int} $newDefault The new default amount of posts to return per paginated page
* @var {void}
*/
function setRestApiPostsPerPage($newDefault) {
foreach (get_post_types() as $i => $postType) {
add_filter( "rest_{$postType}_query", function ($args, $request) {
if (! isset($_GET['per_page'])) {
// new default to overwrite the default 10
$args['posts_per_page'] = $newDefault;
}
return $args;
}, 15, 2);
}
}
J'ai découvert que vous ne pouvez pas définir $args['posts_per_page'] = -1;
Cela entraîne une erreur que vous pouvez voir ici.
Vous pouvez lancer n'importe quelle logique dans la fermeture/le rappel/le filtre pour définir le $args['posts_per_page']
comme vous le souhaitez.
L'argument dans V2 est "per_page" - http://v2.wp-api.org/reference/posts/