Php Wordpress pre_get_posts类别筛选器删除自定义菜单项

Php Wordpress pre_get_posts类别筛选器删除自定义菜单项,php,html,wordpress,Php,Html,Wordpress,所以我有一个网站,你可以看到有两个菜单,一个紧挨着徽标,另一个在右上角 它们是在functions.php中使用此代码创建的 function register_my_menus() { register_nav_menus( array( 'header-menu' => __( 'Header Menu' ), 'extra-menu' => __( 'Extra Menu' ) ) ); } add_action( 'init', 'register_my_m

所以我有一个网站,你可以看到有两个菜单,一个紧挨着徽标,另一个在右上角

它们是在functions.php中使用此代码创建的

function register_my_menus() {
register_nav_menus(
  array(
  'header-menu' => __( 'Header Menu' ),
  'extra-menu' => __( 'Extra Menu' )
)
 );
 }
add_action( 'init', 'register_my_menus' );
这是我使用菜单的代码

<nav>
<?php wp_nav_menu(array( 'theme_location' => 'header-menu' ) ) ?>
</nav>

<nav id="ecommerce">
<?php wp_nav_menu( array( 'theme_location' => 'extra-menu' ) ); ?>
</nav>
所以我猜代码有问题。请帮帮我!我真的很感激

最好的, 杰恩

我把最后一个代码改成了这个

add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
if(is_category()  && $query->is_main_query()) {
$post_type = get_query_var('post_type');
if($post_type)
    $post_type = $post_type;
else
    $post_type = array('post','Blog');
$query->set('post_type',$post_type);
return $query;
}
}
您可以尝试此操作(如果
$post\u type=$post\u type;
,则不需要多个


检查以下条件,然后再进行检查:

  if ($query->get('post_type') == 'nav_menu_item')
    return $query;
就像这里:

    function wp32151_search_filter($query)
{
    if ($query->get('post_type') == 'nav_menu_item')
        return $query;

    if ($query->is_search) {
        $query->set('post_type', 'shows');
    } 

    return $query;
}

add_filter('pre_get_posts', 'wp32151_search_filter');

菜单到底有什么问题?这就是我经过几个小时的寻找解决方案后终于成功的地方$query->is\u main\u query()不适用于我
  if ($query->get('post_type') == 'nav_menu_item')
    return $query;
    function wp32151_search_filter($query)
{
    if ($query->get('post_type') == 'nav_menu_item')
        return $query;

    if ($query->is_search) {
        $query->set('post_type', 'shows');
    } 

    return $query;
}

add_filter('pre_get_posts', 'wp32151_search_filter');