Попытка добавить элемент в основное меню Wordpress с помощью wp_nav_menu_items не работает - PullRequest
0 голосов
/ 24 марта 2020

Я создаю сайт с помощью WordPress с разделом профиля пользователя. Я построил «основную» навигацию, используя следующий код:

`

<!-- The WordPress Menu goes here -->
                <?php wp_nav_menu(
                    array(
                        'theme_location'  => 'primary',
                        'container_class' => 'collapse navbar-collapse',
                        'container_id'    => 'navbarNavDropdown',
                        'menu_class'      => 'navbar-nav ml-auto',
                        'fallback_cb'     => '',
                        'menu_id'         => 'main-menu',
                        'depth'           => 2,
                        'walker'          => new Understrap_WP_Bootstrap_Navwalker(),
                    )
                ); ?>

`

Используя фильтр 'wp_nav_menu_items', я пытаюсь добавить пользовательскую ссылку как пункт этого меню со следующим кодом:

`

add_filter('wp_nav_menu_items', 'your_custom_menu_item',10,2);
                    function your_custom_menu_item ( $items, $args ) {
                     if ($args->theme_location == 'primary') {
                            $items.="<li>Testing Menu</li>";
                            return $items;
                    }
                }

`

Однако он не отображается в меню.

Кто-нибудь из вас, ребята, имеет представление о том, что я делаю здесь неправильно?

Надеюсь услышать от вас скоро!

Ура,

Ганс

1 Ответ

0 голосов
/ 25 марта 2020

вчера только работал над аналогичной проблемой, хотя я нацеливаюсь на конкретный пункт меню c, который добавляется через интерфейс администратора, и добавляю новые элементы на основе проанализированных данных xml. Вот код, если он помогает ... (главное - вернуть $ menu_items после добавления новых элементов - но также используя этот метод, вам не нужно оборачивать элемент - пусть ядро ​​WP справится с этим за вас.)

class TFDC_Menu_Markets {

    function __construct() {
        add_filter( 'wp_get_nav_menu_items', array($this, 'add_menu_items'), 20,2);
    }

    function add_menu_items( $menu_items, $menu){
        global $tfdc;
        $widget_menu = false;
        foreach( $menu_items as $menu_item ) {
            if( array_intersect( array( 'tfdc-menu' ), $menu_item->classes ) ){
                $widget_menu = $menu_item;
                break;
            }
        }

        if( ! $widget_menu )
            return false;

        $index=0;
        foreach($tfdc->markets as $marketID=>$marketLongName) {
            $index++;
            $menu_items[] = $this->add_item($marketLongName,'/widgets/view/?marketID='.$marketID,$widget_menu->ID,$index);
        }

        return $menu_items;

    }

    function add_item($title, $url, $parent, $order=0) {
        $item = new stdClass();
        $item->ID = 1000000 + $order + $parent;
        $item->title = $title;
        $item->url = $url;
        $item->menu_item_parent = $parent;
        $item->menu_order = $parent + $order;

        return $item;
    }

}

$menu_markets = new TFDC_Menu_Markets();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...