菜单在类别页面上消失

时间:2013-11-26 作者:Jacob Lamont

我有一个网站,其导航消失在“post”帖子类型的分类页面上,但不适用于任何自定义帖子类型的帖子。“post”post类型和自定义post类型的post对其存档和标题使用相同的模板文件-没有区别。菜单使用wp\\U nav\\U菜单功能。下面的链接示例(同样,使用相同的模板文件):

Menu: http://politichicks.tv/column/

No Menu: http://politichicks.tv/category/videos

2 个回复
SO网友:Adriana Hernández

我知道这是一个老问题,但似乎仍未解决。正如@Milo所说,您可能有一个不正确的pre_get_posts 实施

大多数人都是这样做的(例如):

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

function query_post_type( $query ) {
    if ( is_category() ) {
        $post_type = get_query_var( \'post_type\' );
        if ( $post_type ) {
            $post_type = $post_type;
        } else {
            $post_type = array( \'nav_menu_item\', \'post\', \'departments\' );
        }
        $query->set( \'post_type\', $post_type );

        return $query;
    }
}
但我们必须改变路线:$post_type = $post_type; 并通过\'nav_menu_item\'$post_type 要显示菜单,如下所示:

add_filter( \'pre_get_posts\', \'query_post_type\' );
function query_post_type( $query ) {
    if ( is_category() ) {
        $post_type = get_query_var( \'post_type\' );
        if ( $post_type ) {
            $post_type = array( \'nav_menu_item\', $post_type );
        } else {
            $post_type = array( \'nav_menu_item\', \'post\', \'departments\' );
        }
        $query->set( \'post_type\', $post_type );

        return $query;
    }
}
我希望这能帮助那些犯错的人,并为我糟糕的英语感到抱歉。

SO网友:Zach Russell

您是否尝试过使用wp_nav_menu() 作用这是wp_nav_menu reference.

而不是这样:

<?php if ( has_nav_menu( \'primary\' )) {
                                if(!getMainMenu(\'primary\')){
                    /*$backup = $wp_query;
                    $wp_query = NULL;
                    $wp_query = new WP_Query(array(\'post_type\' => \'post\'));*/
                    getMainMenu(\'primary\');
                    /*$wp_query = $backup;*/
                }
                            }
我想试试这个:

<?php if ( has_nav_menu( \'primary\' )) {     
    wp_nav_menu( array(\'menu\' => \'primary\' ))
}

结束

相关推荐

Displaying Archives List

我正在使用显示列表或档案<?php get_archives(\'monthly\', \'\', \'html\', \'\', \'\', FALSE); ?> 并显示我的列表2012年12月-2012年11月等但是,我想将其格式化以显示:12.1211.1210.12等有什么想法吗?