En raison du manque de documentation sur post_limits
, il est difficile d’en savoir plus sur cette fonction et sur son utilisation. Jamais utilisé auparavant ou vu il utilisé alors peut-être que son pas être utilisé?
function wpcodex_filter_home_post_limits( $limit, $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
return 'LIMIT 0, 25';
}
return $limit;
}
add_filter( 'post_limits', 'wpcodex_filter_home_post_limits', 10, 2 );
D'après mes tests, post_limits fait la même chose que d'utiliser pre_get_posts.
Si je voulais renvoyer 5 messages de manière conditionnelle sans paginer le reste, utiliserais-je post_limits ou pre_get_posts?
Notez que vous remplacez ici la pagination de la requête principale, avec le filtre posts_limits
, en utilisant des valeurs codées en dur:
'LIMIT 0, 25'
où 0
est le décalage et 25
le nombre de publications à afficher.
Donc, dans ce cas, je voudrais simplement utiliser pre_get_posts
avec
$query->set( 'posts_per_page', 25 );
et nous n'avons pas à nous soucier de la pagination.
Si je voulais renvoyer 5 messages de manière conditionnelle sans paginer le reste, utiliserais-je post_limits ou pre_get_posts?
Si nous décidons par la suite que la pagination est nécessaire, nous devons retravailler votre code posts_limits
. Le filtre pre_get_posts
fonctionnerait tel quel et nous pourrions donc dire que c'est au moins une méthode plus "évolutive".
Autre chose: si vous utilisiez get_posts()
ou WP_Query()
avec les filtres suppressed , le filtre posts_limits
ne serait pas disponible tant que le hook pre_get_posts
serait accessible.
pre_get_posts
vous permet de modifier les arguments de la requête très tôt dans une requête. Vous pouvez modifier tout ce qui constituerait un argument WP_Query
valide, y compris LIMIT
via l’argument posts_per_page
. Cela permet une gamme d'effets beaucoup plus large que posts_limits
qui ne vous permet de modifier qu'une partie de la requête SQL de la base de données.
Dans votre cas, utilisez pre_get_posts
car le code de base gère la pagination pour vous (du moins s'il s'agit de la requête principale (). Si vous utilisez post_limits
, vous devrez suivre et gérer la pagination - la partie "0,25" vous-même. , augmentant les valeurs à mesure que vous parcourez la page.