J'ai une requête personnalisée sur ma page d'accueil montrant tous les messages dans une certaine catégorie. J'ai besoin de cette requête pour respecter les posts collants, mais d'après mes recherches, il semble que les requêtes par catégorie ignorent le caractère persistant. Ma question est deux (et demi) fois:
wp_postmeta
ou wp_posts
. Celui-ci est le plus important et sera probablement suffisant pour vous Juste pour le plaisir, voici ma question, bien que je pense que cela ne changera rien à la réponse.
$getHighlights = array(
'posts_per_page' => 7,
'post_type' => array('post','Event'),
'category_name' => 'Highlights',
);
Désolé pour le titre long, mais je voulais préciser ce que je demandais.
Ajoutez simplement 'post__in' => get_option('sticky_posts')
à votre requête, pour limiter votre requête à des posts collants. Alors,
$getHighlights = array(
'numberposts' => 7,
'post_type' => array('post','Event'),
'post__in' => get_option('sticky_posts'),
'category_name' => 'Highlights'
);
devrait travailler pour vous.
Edit: Voici comment vous pouvez fusionner deux tableaux pour obtenir les posts collants en haut de votre requête:
$getHighlights_sticky = get_posts( array(
'numberposts' => 7,
'post_type' => array('post','Event'),
'post__in' => get_option('sticky_posts'),//it should be post__in but not posts__in
'category_name' => 'Highlights'
));
$getHighlights_other = get_posts( array(
'numberposts' => 7 - count( $getHighlights_sticky ),
'post_type' => array('post','Event'),
'post__not_in' => get_option('sticky_posts'),//it should be post__not_in but not posts__not_in
'category_name' => 'Highlights'
));
foreach ( array_merge( $getHighlights_sticky, $getHighlights_other ) as $post ) {
setup_postdata( $post );
// your display loop
}
Cela affichera 7 posts, avec les collants en haut (bien sûr, cela suppose que vous n'avez pas plus de 7 collants, sinon tout sera foiré ...) (édité pour utiliser numberposts
selon le commentaire de l'OP ci-dessous ...)
Le post-it n'est pas enregistré par article, il existe une option sticky_posts
qui contient un tableau de ces éléments. Donc, vous pouvez aller chercher ça avec $sticky_posts = get_option('sticky_posts');
Reportez-vous à Paramètres de post-traitement dans le Codex pour plus de détails sur l'interrogation des post-it.
Je ne suis pas tout à fait sûr de ce qui serait la meilleure approche pour rendre votre requête respectueuse. En regardant rapidement dans le code, il est probable que is_home
conditionnel soit remplacé et que cela provoque des problèmes. Peut-être capable d'accrocher quelque part et de simuler ce conditionnel, mais cela pourrait casser quelque chose de plus dans le traitement.