在首页显示自定义帖子类型的功能使菜单项消失

时间:2017-07-08 作者:Destiny2Gamer

我已经创建了一个自定义帖子类型。看起来效果不错。我搜索了以下代码,以便在博客首页的其他帖子中显示自定义帖子类型:

//add custom post type to front page
add_action( \'pre_get_posts\', \'add_my_post_types_to_query\' );

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

    return;
        $query->set( \'post_type\', array( \'post\', \'reviews\' ) );

}
然而,这一段代码使所有菜单上的所有菜单项都消失了。我只有三个菜单:主页眉菜单、页脚菜单和移动菜单。我没有很多东西。

当我从中删除上述代码时functions.php, 菜单项重新出现,但现在我的自定义帖子类型没有显示在首页上。

有人知道为什么代码会导致菜单项消失吗?

1 个回复
SO网友:Dave Romsey

下面是您发布的代码的详细情况。

这段代码的意思是,如果这是主页并且正在使用主查询,请不要执行任何操作。

if ( is_home() && $query->is_main_query() )

return;
那不好!如果我们在主页上并且正在运行主查询,那么我们的目的是修改查询。

然后我们有:

$query->set( \'post_type\', array( \'post\', \'reviews\' ) );
此代码正确设置了查询以获取职位类型的职位postreviews, 但由于上面的条件语句,它将为非主查询触发,这就是为什么它会弄乱您的菜单。导航菜单和辅助循环不使用主查询。

以下是可以使用的代码的更新版本:

add_action( \'pre_get_posts\', \'add_my_post_types_to_query\' );
function add_my_post_types_to_query( $query ) {
    // Bail if this is not the home page or if it\'s not the main query.
    if ( ! is_home() && ! $query->is_main_query() ) {
        return;
    }

    $query->set( \'post_type\', array( \'post\', \'reviews\' ) );
}

结束

相关推荐

Functions.php中的入队样式

这对我没用functions.php: if( is_page_template( \'template-flat.php\' ) ) { function flatsome_scripts() { wp_enqueue_style( \'flatsome-style\', get_template_directory_uri() .\'/flatash/css/foundation.css\', array(), \'2.1\', \'all\'); }