Intereting Posts
Пользовательские таксономии пользователей терпят неудачу, когда я регистрирую несколько таксономий Ошибка при отправке пароля сброса Почему мой WP_Query не работает, когда термины tax_query являются массивом? Могу ли я получить программный доступ к wp-admin? Как показать условное заявление в CMB2 для ввода текста? Поиск разъяснений по жизненному циклу запроса страницы Пожалуйста, объясните, как WordPress работает с набором символов MySQL и сортировкой на низком уровне Как получить чистую постоянную ссылку в черновик? Использование короткого кода для отображения массива в массиве После обновления сайта для использования SSL все изображения в сообщениях указывают на http: // Multisite vs Single site – сравнение скорости / производительности Как имя WordPress изменяет размер копий изображений? Страница разбивки на страницы 404 не найдена meta_query с мета значениями как сериализуемые массивы Как проверить, какие плагины использовались для установки WordPress?

Добавить меню и подменю в admin с URL вместо slug?

Я использую эту функцию и подключаю:

function mysite_admin_menu() { add_menu_page( 'Categories', 'Catégories', 'administrator', 'categories', 'a_function' ); add_submenu_page( 'categories', 'Manage', 'Manage', 'administrator', 'xxx', 'a_function' ); remove_submenu_page('categories','categories'); } add_action( 'admin_menu', 'mysite_admin_menu' ); 

Он отображает то, что мне нужно: меню с подменю в левой панели меню администратора.

Дело в том, что подменю ведет к этой странице: admin.php?page=xxx .

Как я могу сделать ссылку на URL-адрес, например edit-tags.php?taxonomy=category ?

Если я поменяю slug на add_submenu_page с относительным URL-адресом, ссылка приведет к admin.php?page=edit-tags.php?taxonomy=category .

Независимо от того, что я делаю, я всегда получаю admin.php?page=... это не то, что я хочу.

Это старый пост, но вы не можете просто использовать wordpress $menu и / или $submenu globals, как Олег предложил в номер 2.

Когда сомневаетесь, скопируйте WordPress :

WordPress / WP-администратора / menu.php

Например, чтобы добавить ссылку, похоже, что она будет работать:

 function add_external_link_admin_submenu() { global $submenu; $permalink = admin_url( 'edit-tags.php' ).'?taxonomy=category'; $submenu['options-general.php'][] = array( 'Manage', 'manage_options', $permalink ); } add_action('admin_menu', 'add_external_link_admin_submenu'); 

Вы можете заменить $permalink = ... на что угодно

Поэтому это также должно работать:

 $permalink = 'http://www.example.com'; 

Кроме того, предлагается не использовать «администратор» (хотя я тоже его использую). В любом случае, прочитайте этот билет для альтернативных решений.

Я не рекомендую вам это делать.

Предположим, что ваш префикс для admin.php_trigger_me_

  1. Подменю

     <?php function _clean_url_to_repalce_admin_menu($url, $original_url, $_context){ if ($url == 'admin.php?page=_trigger_me_'){ remove_filter('clean_url', '_clean_url_to_repalce_admin_menu', 10); //return admin_url('someotherpage.php); return 'http://google.com/'; } } if (is_admin()) add_filter('clean_url', '_clean_url_to_repalce_admin_menu', 10, 3); 
  2. Главное меню

     <?php function custom_admin_menu_action_hook(){ global $menu; foreach($menu as $k=>$item){ if ($item[2] == '_trigger_me_'){ $menu[$k][2] = 'http://google.com'; } } } add_action('admin_menu', 'custom_admin_menu_action_hook', 100); 

Я называю оба примера «хаками». Они могут сделать, но лучше не делать этого.

Обновить.

если в случае, если выполнено перенаправление =)

 <?php $hook = add_submenu_page($parent, $title, $menu_title, 'manage_option', 'callback'); add_action("load-{$hook}", create_function('',' header("Location:", admin_url("someurl.php?blahblahblah")); exit; ')); 

в случае, если вы хотите заменить это на странице таксономии ( edit-tags.php )

 <?php add_action('admin_menu', 'admin_menu_edit_tags_page'); function admin_menu_edit_tags_page(){ // please set $YOURPARENTSLUG as parent slug of your menu item (parent of your menu) // manage_tags to manage_terms of your taxonomy capability (its visible whan you var_dump($wp_taxonomies[$taxonomyyouwant])); add_submenu_page($YOURPARENTSLUG, 'menu', 'title', 'manage_tags', 'edit-tags.php?taxonomy=taxonomy'); } 

Спасибо, Олег, ваш скрипт работает, но нарушает интерфейс администратора (цвета фона и изображения все исчезают по любой причине).

Но если мне придется идти по этому пути, я могу сделать это вместо этого:

 function changeUrl() { $pageURL = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; if ($pageURL == 'http://www.mysite.com/wp-admin/admin.php?page=xxxx') { header ('location:http://www.mysite.com/wp-admin/edit-tags.php?taxonomy=category'); } } add_action( 'admin_menu', 'changeUrl' ); 

Мне кажется любопытным, что нет простого способа связать подменю с любым URL-адресом. Этот вид перенаправления грязный … но он работает.

Хотя это старая проблема, я хотел бы внести свой вклад в рассмотрение этого кода:

 function mysite_admin_menu() { add_menu_page( 'Categories', 'Catégories', 'administrator', 'categories', 'a_function' ); add_submenu_page( 'categories', 'Manage', 'Manage', 'administrator', 'manage_categories', 'mysite_manage_categories' ); remove_submenu_page('categories','categories'); } add_action( 'admin_menu', 'mysite_admin_menu' ); function mysite_manage_categories() { ?><script>window.location = "<?php echo admin_url('edit-tags.php?taxonomy=category'); ?>";</script><?php } 

он использует перенаправление javascript вместо создания другого add_action для перенаправления через http.