Je crée un thème dans lequel j'ai créé un modèle de page appelé page_default-blog.php à utiliser pour créer une page de blog. Dans ce fichier, j'ai le code suivant:
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
$args = array(
'paged' => $paged,
);
$custom_query = new WP_Query($args);
if ($custom_query->have_posts()) :
while($custom_query->have_posts()) : $custom_query->the_post(); ?>
the_title();
echo "<br>";
endwhile;
endif;
wp_reset_postdata();
Le problème est que le post-it ne vient pas en haut, même si ignore_sticky_posts est défini sur false par défaut dans $ args.
Le post-it s'affiche en haut si j'utilise le fichier "index.php", mais il ne vient pas si je configure la page d'accueil en tant que page de blog.
S'il vous plaît laissez-moi savoir comment je peux le faire fonctionner. Merci.
Edit 1: Voici le résultat de var_dump ($custom_query->request);
:
string(217) "SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT 0, 4"
Edit 2: Voici à quoi ressemble mon fichier modèle page_default-blog.php
:
<?php
/*
Template Name: Blog Default
*/
get_header();
wp_reset_postdata();
wp_reset_query();
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'ignore_sticky_posts' => 0,
);
$custom_query = new WP_Query( $args );
var_dump( $custom_query->is_home ); // This is returning bool(false)
?>
<div class="container">
<?php
if ($custom_query->have_posts()) : while($custom_query->have_posts()) : $custom_query->the_post(); ?>
<?php
echo the_title();
echo "<br>";
?>
<?php endwhile;
endif;
wp_reset_postdata();
?>
</div>
<?php get_footer(); ?>
Ce qui précède est le fichier exact que j'utilise actuellement. Je l'ai simplifié pour essayer de trouver le problème, mais je n'ai toujours pas réussi à le faire, car le titre du post-it collant n'apparaît pas en haut de la liste.
Vous avez un filtre personnalisé dans un plugin ou dans votre thème qui joue avec WP_Query
. Votre problème est que quelque chose met is_home
à false
. Ce n'est pas le comportement par défaut, par défaut, is_home
devrait renvoyer true
dans toute instance personnalisée de WP_Query
.
is_home
est l’un des facteurs contributifs responsables de la configuration des posts collants en haut dans une requête. Si sa valeur est false
, vous ne pourrez pas placer les posts collants au premier plan.
Vous devriez désactiver vos plugins un par un et vérifier lequel est la cause du problème. Vous devez également tester votre code sur un thème groupé pour éliminer votre thème en tant que coupable possible.