在页面模板中使用时,WP_QUERY不会在顶部出现粘滞帖子

时间:2015-06-07 作者:user1981248

我正在创建一个主题,在其中我创建了一个名为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(); ?>
以上就是我现在使用的文件。我简化了它,试图找出问题所在,但仍然无法找到,因为粘性帖子的标题没有出现在列表的顶部。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

在插件或主题中有自定义过滤器WP_Query. 你的问题是is_homefalse. 这不是默认行为,默认情况下,is_home 应返回true 在任何自定义实例中WP_Query.

is_home 是负责在查询顶部设置粘性帖子的促成因素之一,如果其值为false, 你不会把粘帖移到前面。

你应该一个接一个地停用你的插件,并检查是哪一个导致了这个问题。您还应该在捆绑的主题上测试您的代码,以消除您的主题可能是罪魁祸首

结束

相关推荐

Specific loop in Shortcode

我在做短码,我被困在这里了。以下是代码:add_shortcode(\'service-shortcode\', \'service_shortcode\'); function service_shortcode($atts) { extract( shortcode_atts( array( \'title\' => \'Service One\', \'icon\' => \'fa-briefcase\'