wordpress - pre_get_posts()阻止页面在WordPress中工作

wordpress - pre_get_posts()阻止页面在WordPress中工作,第1张

我有一个WordPress网站,基于320 WP-Bootstrap主题,带有自定义帖子类型的视频。我使用pre_get_posts()在主循环中包含自定义帖子类型,它完美无缺。

使用以下功能时,页面链接停止工作,重定向到404页面。

add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

function add_my_post_types_to_query( $query ) {
    if ( (!is_admin()) && $query->is_main_query() )
        $query->set( 'post_type', array( 'post', 'video' ) );
    return $query;
}

我已隔离对函数文件所做的所有更改。如果没有此查询,页面链接就可以正常工作。

任何帮助都非常感激。

最佳答案:

1 个答案:

答案 0 :(得分:1)

您正在检查您是否在管理页面上,并且正在执行主查询,这很棒。您缺少的部分是检查您是否在存档。

目前无论原始查询是什么,您都要告诉它将帖子类型设置为发布和视频。当您访问页面时,查询将从页面更改为发布 视频,从而生成404。

尝试以下方法:

function add_my_post_types_to_query( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {

        // Check we're on an archive page.
        if ( $query->is_archive ) { 
            $query->set( 'post_type', array( 'post', 'video' ) );
        }

    }

    return $query;
}
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复