修改自定义页面上的循环,行为奇怪

时间:2015-11-19 作者:Goodbytes

我想在我的网站上设置一个自定义页面,只从一个类别中获取帖子。我已经获取了我的主博客页面模板,复制了该文件,并将其作为模板分配给了我的新页面。然后,我在文件管理器“pre\\u get\\u posts”上运行了一个函数来修改该页面的查询。

    function include_category($query)
    {
        if(is_page(16080) && $query->is_main_query())
        {
            $query->set(\'cat\', \'2508\');
        }
    }
    add_action(\'pre_get_posts\', \'include_category\');
然而,这没有任何影响。。该页面仅显示一条与我所在页面链接的“帖子”。ie。。该页面称为“/自定义帖子”。。出现在循环应该位于的位置的一个“post”链接到“/自定义posts”。

我没有对循环做任何不寻常的事情:

        <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

            <?php if ( has_post_thumbnail() ) : ?>
            <?php endif; ?>

            <?php the_title(); ?>
            <?php the_permalink(); ?>

        <?php endwhile; else : ?>
            <p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
        <?php endif; ?>
为什么会返回一页?

谢谢

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

pre_get_posts 在真实页面和静态首页上无法正常工作。您应该使用创建自定义查询WP_Query 返回您需要的帖子。

编辑感谢评论中的@birgire,here 是一种有趣的方法,使用pre_get_posts 静态首页

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post