Добавление "внешней" ссылки в меню админки в бэкенде

30 янв. 2011 г., 23:50:32
Просмотры: 16.1K
Голосов: 7

Пытаюсь добавить ссылку в меню админки (консоль/бэкенд), ведущую на фронтенд WordPress. По сути, мне нужна ссылка в меню, которая будет вести на блог.

Я нашел несколько способов добавления новых элементов в меню админки, но не смог сделать ссылку на home_url. Похоже, меню админки предназначено только для ссылок внутри wp-admin. Кто-нибудь добился успеха в этом?

Редактирование:
Пробовал такой вариант: https://gist.github.com/792b7aa5b695d1092520

add_admin_menu_item('Обзор', array( 
      'title' => 'Просмотр сайта',
      'slug' => get_bloginfo('url')
  ));

Что дает мне ссылку вида hxxp://myurl.com/myurl.com
С этим плагином (hxxp://wordpress.org/extend/plugins/admin-menu-editor/), получается:
hxxp://myurl.com/wp-admin/www.test.com

2
Комментарии

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

Jan Fabry Jan Fabry
1 февр. 2011 г. 13:11:23

Так как этот вопрос всё ещё появляется в топе результатов поиска, и после многих часов поисков, вот способ сделать это без редиректа. http://www.techedg.com/2014/09/06/5575/a-simple-way-to-add-an-external-link-to-the-wordpress-admin-menu/

User User
6 сент. 2014 г. 19:34:19
Все ответы на вопрос 5
3

Вы можете создать функцию, которая перенаправляет на фронтенд сайта, например так:

function redirect_home_987(){
  wp_redirect( home_url() ); // Перенаправление на главную страницу
  exit; // Обязательно завершаем выполнение скрипта
}

И затем вызвать эту функцию в стандартной функции WordPress add_menu_page вот так:

add_menu_page( 
  'redirecting',   // Название страницы
  'Просмотр сайта', // Текст пункта меню
  'read',          // Требуемые права доступа
  'my-top-level-handle', // Ярлык меню
  'redirect_home_987'    // Функция для выполнения
);

Надеюсь, это поможет

31 янв. 2011 г. 09:43:28
Комментарии

Не уверен, что правильно вас понял. Я добавил это в свой functions.php:

add_action('admin_menu', 'add_viewsite');

function add_viewsite() { add_menu_page( 'redirecting', 'View Site', 'read', 'my-top-level-handle', 'redirect_home_987'); }

// Эта функция создаст ссылку на "главную страницу" function redirect_home_987(){ wp_redirect( home_url() ); exit; }

Что дает мне ссылку, которая выглядит так: http://www.url.com/wp-admin/admin.php?page=my-top-level-handle

INT INT
31 янв. 2011 г. 16:15:23

У меня была та же проблема - некоторые заголовки уже были отправлены. Попробовал несколько вариантов; единственное, что сработало (хотя мне это не очень нравится) - это комбинация вышеуказанного с javascript, как в этом ответе

Hobo Hobo
7 июл. 2013 г. 21:59:54

Это вызовет ошибку "headers already sent" (заголовки уже отправлены).

Joel James Joel James
22 авг. 2019 г. 12:10:30
1

Название сайта (слева вверху, рядом с логотипом WP) ссылается на фронтенд, разве этого недостаточно?

Также было бы полезно, если бы вы включили в вопрос код, который уже пробовали использовать.

31 янв. 2011 г. 00:07:41
Комментарии

Спасибо за ваш ответ. Я убрал название сайта, так как оно нарушало макет моего кастомизированного бэкенда, поэтому мне нужно добавить ссылку на фронтенд в меню вместо этого.

INT INT
31 янв. 2011 г. 01:16:30
2

Вы не можете добавлять элементы в меню администратора, которые ведут на внешние URL. Функции добавления меню не поддерживают это и не позволят сделать.

Однако, если вы подключите колбэк к хуку admin_menu, вы можете вручную вставить некоторые элементы и полностью обойти проблему с внешними ссылками в меню. Я сам так делаю и удивлён, что никто ещё не указал на проблему с внешними ссылками в меню.

Я привёл пример в ответе на вопрос Добавление произвольной ссылки в меню администратора?

Дайте знать, если это поможет.

1 февр. 2011 г. 12:52:38
Комментарии

На самом деле, этот вопрос кажется точной копией этого. Поэтому я проголосовал за его закрытие!

Jan Fabry Jan Fabry
1 февр. 2011 г. 13:12:50

@Jan Fabry - Я думал об этом, когда ссылался на другой вопрос, поэтому тоже проголосовал за закрытие как дубликат (пользователь теперь должен получить ответ, который он/она ищет, поэтому закрытие не должно считаться чем-то плохим).

t31os t31os
1 февр. 2011 г. 13:16:56
0
add_action('admin_menu', 'example_admin_menu');

/**
* Добавляет внешнюю ссылку в раздел Инструменты
*/
function example_admin_menu() {
    global $submenu;
    $url = 'http://www.example.com/';
    $submenu['tools.php'][] = array('Пример', 'manage_options', $url);
}
5 мая 2020 г. 15:11:44
1
-1

просто добавьте ../ перед слагом:

add_admin_menu_item('Обзор',array( 
  'title' => 'Просмотр сайта',
  'slug' => '../slug'          // относительный URL
));
20 окт. 2017 г. 14:32:25
Комментарии

Пожалуйста, [отредактируйте] ваш ответ и добавьте объяснение: почему это может решить проблему?

fuxia fuxia
20 окт. 2017 г. 15:30:27