J'utilise pre_get_posts
pour ajuster le nombre de messages affichés sur ma page d'accueil.
function lifelounge_query_adjust( $query ) {
if ( is_home() ) {
set_query_var( 'posts_per_page', 12 );
return;
}
}
add_filter( 'pre_get_posts', 'lifelounge_query_adjust' );
Mais je rencontre un problème avec les messages collants. Fondamentalement, si j'ai des messages collants, la requête affichera plus que les 12 messages que j'ai spécifiés, car elle affichera 12 plus tous les messages collants. Je pourrais, bien sûr, ignorer les messages collants:
function lifelounge_query_adjust( $query ) {
if ( is_home() ) {
set_query_var( 'posts_per_page', 1 );
set_query_var( 'ignore_sticky_posts', 1 );
return;
}
}
add_filter( 'pre_get_posts', 'lifelounge_query_adjust' );
Mais je ne pense pas que ce soit idéal. Je pense que les messages collants devraient être inclus dans la limite de 12 messages, et non ajoutés à la limite. C'est ce qui me semble le plus logique. Y a-t-il un moyen d'y parvenir? Ai-je fait une erreur digne du visage?
Quasiment un doublon de: Post-it collants & Post par page mais qui était étrangement fermé car trop localisé. Je ne suis pas d'accord, évidemment parce que je cherche une réponse, mais aussi parce que c'est une question de savoir pourquoi WordPress ne semble pas respecter la posts_per_page
limite si vous utilisez des posts collants. Si vous voulez 12 articles par page, vous devez en obtenir 12, et non 13, ce que vous obtiendriez si vous aviez un seul article collant.
la source
$sticky_count + (12 - $sticky_count)
pour12- $sticky_count
bien. Par exemple, si j'ai 1 collant, alors vos calculs fonctionnent toujours à 12, puis WP ajoute le post collant pour en faire 13. Oh, et siif ($sticky_count > $posts_per_page)
et nous avons réglé à 12, cela ne veut-il pas dire que nous afficherons 24+?$posts_per_page
sera égal à$sticky_count
, et ici je règle le paramètre posts_per_page à 1, et que je pense que ce sera OK car ce cas peut être rare et ce ne sera que sur la première page ($sticky_count + 1
).Il y a un problème si les messages collants sont dans la première page.
La solution consiste à décrémenter le nombre de messages collants pour les messages collants qui font partie de la première page.
J'espère que cela aidera
la source
J'ai nettoyé les deux réponses ci-dessus en une seule afin qu'elle ne charge pas WP_Query inutile, corrige si le collant sur la première page, réduit le temps de traiter les informations avec un code plus rapide et plus propre.
la source