PRE_GET_POST在自定义发布上出现404错误

时间:2017-07-03 作者:Lisa Lucas

我知道这已经以不同的方式被报道了上千次(我阅读了所有的帖子),但似乎并不是针对我的情况。我自己真的无法让它发挥作用,因为我是一个大的发展障碍。

我有一个模板,它显示了头版上最后的帖子。我将显示的帖子类型更改为question (我的网站是一个问答网站),但页面只显示了13页,而有29页的问题。13页是非自定义类型普通帖子的数量。所以我在functions.php:

add_action( \'pre_get_posts\', function($q) { 
    if( !is_admin() && $q->is_main_query() && !$q->is_tax() ) { 
        $q->set (\'post_type\', array( \'question\' ) ); 
    } 
});
现在,它可以正确计算问题的数量,但每次单击问题的链接时,它都会抛出404错误。我明白这一点pre_get_posts 不是最好的方法,但我真的不知道如何改变它并使用WP_Query 相反,正如我所见,有人建议我这样做。

有什么办法吗?谢谢您<;3.

2 个回复
SO网友:Den Isahac

这可能是对自定义post type 404错误页面的快速修复。

导航到Settings > Permalinks, 然后单击Save Changes 按钮

然后回来检查链接是否没有给你一个404错误。

SO网友:Milo

如果是头版查询,那么您应该检查该案例,而不是!$q->is_tax(), 这在除头版以外的许多情况下都是正确的。

add_action( \'pre_get_posts\', function($q) { 
    if( !is_admin() && $q->is_main_query() && $q->is_front_page() ) {
        $q->set (\'post_type\', array( \'articles\' ) ); 
    } 
});
以及pre_get_posts 确实是处理这类事情的正确方法,使用WP_Query 只会浪费服务器资源。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post