Intereting Posts
Система доставки серийного номера с использованием WordPress Посещение постоянных перерывов страницы add_rewrite_endpoint Добавить пользовательские свойства фона в Настройщик Плагин WordPress, дважды исполняющий код Как WordPress обрабатывает загрузку файла? Где загружается загрузка мультисайта? дросселировать / ограничивать зарегистрированные HTTP-запросы пользователя на конкретную страницу в день Почему я получаю ERR_NAME_NOT_RESOLVED, когда добавляю сайт в свою многоуровневую установку? Как добавить изображение поверх логотипа заголовка в тему для детей? Базовые множественные циклы отображают только первый цикл Получить количество сообщений в названной категории за пределами цикла В архиве категорий отображаются все сообщения, а не определенная категория Проверьте, имеет ли почта какой-либо термин в этой пользовательской таксономии? Ограничить фильтр для работы только внутри определенной функции Как удалить виджет из боковой панели на определенной странице?

Добавить пользовательский элемент меню, который поддерживает подстановочные знаки

Я не очень хорошо знаком с терминологией WordPress, поэтому, возможно, поэтому мои результаты Google возвращаются пустым, но я думаю, что это вопрос, который вызывает проблемы со многими разработчиками с фоном Drupal, которые переходят в WordPress.

Краткая версия:

«Есть ли способ программно добавить элемент меню, например mywordpresssite.com/my/custom/url/%/% (где% – подстановочные знаки) и определить, что эта страница вернется в моем коде?»

Расширенная версия:

В Drupal есть крючок с именем hook_menu, где вы можете определить путь к меню, подобный указанному выше, и функцию обратного вызова, которая будет принимать подстановочные знаки в качестве аргументов.

То, что я пытаюсь сделать здесь, просто: создайте кнопку на каждом посту сайта; когда эта кнопка нажата в определенном столбце, она будет выполнять простой запрос GET через AJAX к элементу меню, например: mywordpresssite.com/ajax-calls/%current_post_id, который позволит мне выполнить некоторую дополнительную обработку конкретной записи в задний план.

Я надеюсь, что это имеет смысл. Если это не так, как все работает в WordPress, пожалуйста, предоставьте любые ресурсы относительно того, как мне следует приближаться к задаче.

Solutions Collecting From Web of "Добавить пользовательский элемент меню, который поддерживает подстановочные знаки"

Этот код можно использовать после сохранения нового сообщения. В противном случае в это время нет объекта сообщения.

Обратите внимание, что код не был протестирован.

<?php // get post ID from the URL query $post_id = $_GET['post']; // get post object $new_item_to_add = get_post($post_id, OBJECT); // get menu to add the item into (change to the relevant slug, ID, or name) $existing_menu = wp_get_nav_menu_object('test-nav-menu-slug'); $existing_menu_id = $existing_menu->term_id; $new_menu_item_data = array( 'menu-item-db-id' => $menu_item_db_id, // default 0, creates a new one 'menu-item-object-id' => $post_id, 'menu-item-object' => '', //default 'menu-item-parent-id' => 0, //default 'menu-item-position' => 0, //default 'menu-item-type' => $new_item_to_add->post_type, 'menu-item-title' => $new_item_to_add->post_title, 'menu-item-url' => get_permalink($post_id), 'menu-item-description' => '', //default 'menu-item-attr-title' => '', //default 'menu-item-target' => '', //default 'menu-item-classes' => '', //default 'menu-item-xfn' => '', //default 'menu-item-status' => 'publish', ); wp_update_nav_menu_item($existing_menu_id, $menu_item_db_id = 0, $new_menu_item_data); 

См. Ссылку на ссылку wp_update_nav_menu_item .

Кроме того, есть худший способ. Вы можете изменить меню на лету . Это не будет обновлять меню:

 <?php function wpse267737_add_nav_menu_items($nav_menu_items) { // get post ID from URL $post_id = $_GET['post']; // get current post data $link_url = get_permalink( $post_id ); $link_anchor = get_the_title( $post_id ); // build new menu item $new_menu_item = '<li><a href="' . $link_url . '">' . $link_anchor . '</a></li>'; // concatenate existing items and new $nav_menu_items .= $new_menu_item; return $nav_menu_items; } // change TEST-MENU-SLUG to the relevant menu slug add_filter( 'wp_nav_menu_TEST-MENU-SLUG_items', 'wpse267737_add_nav_menu_items' ); 

См. Ссылку wp_nav_menu_items .