我正在创建一个主题,在其中我创建了一个名为page\\u default-blog的页面模板。用于创建博客页面的php。在此文件中,我有以下代码:
$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();
问题是,尽管在$args中,ignore\\u sticky\\u posts默认设置为false,但粘性帖子并没有出现在顶部。
如果我使用“索引”,粘性贴子会显示在顶部。php’但是如果我将首页设置为博客页面,它就不会出现。
请让我知道我如何才能让这个工作。谢谢
Edit 1:以下是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:这是我的模板文件
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(); ?>
以上就是我现在使用的文件。我简化了它,试图找出问题所在,但仍然无法找到,因为粘性帖子的标题没有出现在列表的顶部。
最合适的回答,由SO网友:Pieter Goosen 整理而成
在插件或主题中有自定义过滤器WP_Query
. 你的问题是is_home
到false
. 这不是默认行为,默认情况下,is_home
应返回true
在任何自定义实例中WP_Query
.
is_home
是负责在查询顶部设置粘性帖子的促成因素之一,如果其值为false
, 你不会把粘帖移到前面。
你应该一个接一个地停用你的插件,并检查是哪一个导致了这个问题。您还应该在捆绑的主题上测试您的代码,以消除您的主题可能是罪魁祸首