scottb
  • 0
Гуру

Как добавлять страницы в пользовательские меню на лету [дубликат]

  • 0
На этот вопрос уже есть ответ здесь :

Share
  1. Посмотрите на класс основного файла. Он находится внутри папки /wp-includes/. Один называется class.something.php, другой просто nav-menu.php или что-то в этом роде. У тебя там все есть. Другие решения ищите в WA. Уже много вопросов по этому поводу и, конечно же, ваша пятерка тоже.

    • 0
    • @Kaiser, спасибо за указатель на nav-menu.php — я думаю, что я на правильном пути с этим. Я обновил свой вопрос соответствующей функцией, с которой я буду кодировать…

      • 0
    • Тестирую это сейчас. Спасибо! Кстати, я предполагаю, что «Главное меню навигации» — это имя, данное меню, когда оно было зарегистрировано в теме? register_nav_menus(array(‘header-menu’ => __(‘Главное меню навигации’)));

      • 0
    • @Scott B — если честно: мне действительно не нравится твое поведение здесь. Извините, но я должен сказать это. Вы ответили только на свои вопросы, не помогли ни одному другому пользователю здесь. Кроме того, у меня не создается впечатление, что вы действительно пытались решить вопрос самостоятельно — это не предназначено для вашего бесплатного форума / списка «выполнить мою задачу». Вы в одном вопросе от 200 вопросов и даете мне комментарии такого содержания, как «одна вещь, которую я упускаю (…)». Имо: Сделай свою задачу сам или заплати кому-то за это.

      • 0
    • Спасибо за вашу помощь. Я обновил свой вопрос соответствующим кодом из nav-menu.php.

      • 0
  2. Думаю, больше пояснений не требуется:

    $mymenu = wp_get_nav_menu_object('Main Navigation Menu');
    $menuID = (int) $mymenu->term_id;
    $myPage = get_page_by_title('About Us');
    
    $itemData =  array(
        'menu-item-object-id' => $myPage->ID,
        'menu-item-parent-id' => 0,
        'menu-item-position'  => 2,
        'menu-item-object' => 'page',
        'menu-item-type'      => 'post_type',
        'menu-item-status'    => 'publish'
      );
    
    wp_update_nav_menu_item($menuID, 0, $itemData);
    
    • 0
  3. Можете написать название вашего плагина? Может быть, у кого-то уже есть решение для этого конкретного вопроса.

    Я не могу дать решение. Я не очень много играл с «новой» функцией wp-navmenu, поэтому я могу только сделать несколько предложений:

    1. Найдите в своем плагине функцию/метод, который создает новый пост в таблице WordPress.
    2. Возвращает идентификатор созданного сообщения (wp_insert_post(), wp_update_post() возвращает его по умолчанию).
    3. Добавьте пост с заданным id в меню:
      • С сообщением в таблице wp_posts. Элементы меню wp-nav представляют собой простые сообщения с типом сообщения «wp-nav-item». Вам также необходимо добавить правильные термины и сделать отношения в таблице wp_term_relationships.
      • С хуком-фильтром, например, «wp_get_nav_menu_items». Посмотрите на файл «nav-menu.php» в каталоге wp-includes. В строке 525 вы можете увидеть назначенный фильтр-хук в функции «wp_get_nav_menu_items». Этот метод не будет стандартным, что означает, что вы не можете редактировать сообщения/страницы в разделе «Меню» в своей панели администратора. Так что вариант № 1, вероятно, подходит для решения вашей проблемы.
    • 0

Оставить ответ

You must login to add an answer.