WordPress пользовательское меню для другой страницы - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь использовать пользовательское меню на моей целевой странице.

Я использовал этот код:

<?php
function change_wp_nav_menu_args($args = ''){
    $pageID = get_the_id();
    if($pageID == '63') //custom menu for site with id 63
    {
        $args['menu'] = 'homepage';
    }
    return $args;
}
add_filter( 'wp_nav_menu_args', 'change_wp_nav_menu_args' );
?>

Работает нормально, но меняется не только главное меню.Меняется и меню нижнего колонтитула.Но меню нижнего колонтитула должно быть одинаковым на каждой странице.

Как я могу повлиять на это?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Здорово, что вы нашли свой ответ, но рекомендуется сделать код динамическим, а вместо этого установить значение меню как статическое [ $ args ['menu'] = '6' ].

Предложение:

Создать мета-бокс [выпадающий список меню] для страницы с меню меток.И используйте Идентификатор меню для wp_nav_menu .

Для раскрывающегося списка [список меню]

function your_menus()
{
    $menu_arr=NULL;
    $menus=get_terms( 'nav_menu', array( 'hide_empty' => true ) );
    $menu_arr['your-nomenu']='Default';
    foreach ( $menus as $menu ){
        $menu_arr[$menu->slug]=$menu->name;
    }
    return $menu_arr;
}//end of function

Для меню навигации: [_your_page_menu: meta name].Вы можете поместить код в функцию и вызвать ее в заголовке или же поместить этот код прямо в заголовок.

     $page_menu_name=get_post_meta(get_the_ID(),'_your_page_menu',true)==''?'your-nomenu':get_post_meta(get_the_ID(),'_your_page_menu',true);
                if($page_menu_name==='your-nomenu')
                {
                    wp_nav_menu(array('theme_location'  => 'primary','menu_id'=> 'main-menu','container'=>false,'fallback_cb'=>'','menu_class'=>'main-navigation'));
                }
                else
                {
                    wp_nav_menu(array('menu_id'=> 'main-menu' , 'container'=>false, 'menu'=>$page_

menu_name,'fallback_cb'=>'','menu_class'=>'main-navigation'));
            }

Надеюсь, он вам поможет.

0 голосов
/ 13 октября 2018

Этот код исправил мою проблему:

<?php
        add_filter( 'wp_nav_menu_args', 'bb_wp_nav_menu_args' );
            function bb_wp_nav_menu_args( $args = '' ) {
                // change the menu in the Header menu position
                if( $args['theme_location'] == 'primary' && is_page('63') ) { 
                    $args['menu'] = '6'; // 32 is the ID of the menu we want to use here
                }
                return $args;
            }
    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...