自定义POST类型代码隐藏导航

时间:2012-07-29 作者:Terrell Anderson

嗨,我有自定义帖子类型的代码

add_filter( \'pre_get_posts\', \'my_get_posts\' );

 function my_get_posts( $query ) {
if ( is_home() )
    $query->set( \'post_type\', array( \'post\', \'page\', \'album\', \'movie\', \'quote\', \'attachment\' ) );

return $query;
}
我将其添加到我的函数中。php文件,它可以工作,但它使我的导航菜单消失。

3 个回复
最合适的回答,由SO网友:Terrell Anderson 整理而成

找到了一个解决方案,它比我要求的做得更多。此解决方案显示要显示在主页上的自定义帖子类型,下半部分显示在存档和搜索结果中:)

add_filter( \'pre_get_posts\', \'my_get_posts\' );

function my_get_posts( $query ) {

    if ( is_home() && false == $query->query_vars[\'suppress_filters\'] || is_feed() )
            $query->set( \'post_type\', array( \'posts\', \'custom_post_type_name\' ) );

    return $query;
 }

 add_filter(\'pre_get_posts\', \'query_post_type\');
 function query_post_type($query) {
 if ( is_archive() && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$post_type = get_query_var(\'post_type\');
    if($post_type)
        $post_type = $post_type;
    else
        $post_type = array(\'posts\', \'custom_post_type_name\');
$query->set(\'post_type\',$post_type);
    return $query;
}
}
将此放在您的函数中。php文件

SO网友:Dave Romsey

看起来您正在覆盖导航菜单查询。通过添加! is_admin()$query->is_main_query() 条件,您可以确保针对前端帖子的主查询。

add_filter( \'pre_get_posts\', \'my_get_posts\' );
function my_get_posts( $query ) {

 if ( ! is_admin() && $query->is_main_query() && is_home() )
    $query->set( \'post_type\', array( \'post\', \'page\', \'album\', \'movie\', \'quote\', \'attachment\' ) );

return $query;
}

SO网友:Chris_O

查询隐藏导航的原因是您缺少“nav\\u menu\\u items”帖子类型:

add_filter( \'pre_get_posts\', \'filter_pre\' );
function filter_pre( $query ) {
    if( ! $query->is_main_query() || ! $query->is_home() )
        return $query;
    $query->set( \'post_type\', array( \'posts\', \'custom_p_type\', \'nav_menu_items\' ) );

    return $query;
 }

结束

相关推荐