Додає пункт (сторінку) верхнього рівня в меню адмін-панелі (в один ряд з постами, сторінками, користувачами і т.д.).
add_menu_page () використовується для створення головного пункту меню в адмін-панелі і прикріплення до цього пункту функції, яка буде відповідати за сторінку в адмін-панелі пов'язану з цим пунктом меню.
Якщо потрібно додати дочірній пункт меню, використовуйте add_submenu_page ().
Якщо ви бачите помилку "You do not have sufficient permissions to access this page." при спробі зайти на сторінку, це означає, що ви підключаєте функцію занадто рано, підключаєте функцію нема на потрібний хук. Потрібно використовувати хук admin_menu.
повертає
Рядок. Назва хука, назва сторінки меню або false, якщо користувач не має прав доступу до меню.
Використання
$ Page_title (рядок) (обов'язковий) Текст, який буде використаний в тезі
Унікальне назва (slug), за яким потім можна звертатися до цього меню.
Якщо параметр $ function не вказано, цей параметр повинен дорівнювати назвою PHP файлу щодо каталогу плагінів, який відповідає за виведення коду сторінки цього пункту меню.
Два варіанти установки параметра:
Якщо функція є методом класу, вона викликається за посиланням:
array ($ this, 'function_name')
або статично:
array (__CLASS__, 'function_name').
За замовчуванням: немає
Іконка для пункту меню.
Якщо вам потрібно підключити довільну картинку, можна використовувати функцію plugin_dir_url (__FILE__). щоб отримати урл до папки файлу плагіна і потім дописати до нього назву картинки: plugin_dir_url (__FILE__) .'plugin-icon.png '. Розміри іконки повинні бути 20х20 пікселів або менше.
З версії 3.8, WP використовує спеціальні іконки dashicons. щоб вказати одну з цих ікон, виберіть потрібну в колекції ікон і вкажіть в цьому параметрі назва іконки. Наприклад, іконка консолі називається dashicons-dashboard вказуємо цю назву.
Якщо вказати 'none', то буде створений шар div картинку для якого можна потім вказати в CSS стилях.
За замовчуванням: ''
Число визначальне позицію меню. Чим більше цифра, тим нижче буде розташований пункт меню.
Увага! Якщо два пункти використовують однакову цифру-позицію, один з пунктів меню може бути перезаписан і буде показаний тільки один пункт з двох. Щоб уникнути конфлікту, можна використовувати десяткові значення, замість цілих чисел: 63.3 замість 63. Використовуйте лапки для коду: "63.3".
За замовчуванням, пункт меню буде додано в кінець списку.
Список позицій для базових пунктів меню:
За замовчуванням: в кінці списку іконок
# 1 Пункт настройки теми
Цей приклад показує як додати сторінку налаштувань теми, в головне меню адмін-панелі WordPress.
# 2 Додавання меню для адміністратора
Додамо пункт меню в адмін-панель, який буде видно тільки адміністраторам:
Варіант 1 (тільки для плагінів):
В цьому випадку код сторінки повинен бути розташований в файлі wp-content / plugins / myplugin / myplugin-admin.php:
# 3 Додавання пункту меню, з перевіркою що його ще немає
Припустимо, що перед додавання пункту меню потрібно переконається що цей пункт ще не доданий з іншого місця. Для того щоб таку перевірку зробити дуже швидкою, можна використовувати глобальну змінну $ admin_page_hooks
# 4 Перевірка наявності пункту меню або пункту підменю
Ця функція перевіряє наявність пункту мене або пункту підменю за вказаною ідентифікатором цього пункту.
Функція перевіряє права користувача, щоб відобразити пункт меню. Функція, яка виводить код сторінки повинна перевіряти ці права окремо.
Код add menu page. wp-admin / includes / plugin.php WP 4.8.3
cвязана функції
З мітки: Меню адміністрування (admin menu)
Вообщем сенс в тому, що використовуючи add_menu_page () я отримую в адмінці такий URL: wp-admin / admin.php? Page = edit-package
А мені потрібно щоб URL не містив admin.php, а щось інше. Наприклад, product.php. В результаті URL був би таким:
Тобто можна якось вплинути на функцію (за допомогою фільтрів або може потрібно використовувати якусь іншу функцію), щоб отримати бажаний URL. Дякуємо!
Так admin.php це ж не просто текст в URL - це файл з купою коду, який описує сторінку адмінки, зі всякими перевірками за ролями, функціями і хукамі.
Якщо вам потрібно щось унікальне для окремої ролі. Наприклад, редагування якогось поста. То може простіше зробити це у фронті? Або якщо у ролі є доступ в адмінку, стандартно через add_menu_page (), а там вже при обробці виведення, перевіряти права і роздавати кому що потрібно. А URL шлях буде стандартний. Поміняти його звичайно можна, але це більше проблем отримаєте, простіше придумати інше рішення проблеми в рамках поточного URL і поточного середовища. Якось так мені здається.
Дуже вдячний за вашу думку. У фронті не піде. У кастомних ролей в дмінке є профіль і можливість редагувати ще два довільних типу записи. Там все стандартно як і з post.
А ось саме в цьому типі, потрібно виключити вибірку всіх записів, але при цьому вивести всього одну і дати можливість її редагувати. Ось така ось завдання.
Буду думати. Просто до вашого поста десь читав, що add_menu_page () має параметр, який дозволяє задавати унікальне ім'я для сторінки. Мабуть мався на увазі фільтр $ menu_slug.
Цитую: Або якщо у ролі є доступ в адмінку, стандартно через add_menu_page (), а там вже при обробці виведення, перевіряти права і роздавати кому що потрібно.
Відповідаю: Саме так і зробив. Одна заминка з цим admin.php.
Не підкажете, може можна створити свою сторінку, а потім якимось чином прив'язати її до адміністративного меню? Або може ще якісь подібні функції (add_menu_page ()) є. Щиро Дякую.
Я так і не зрозумів навіщо потрібно замінити admin.php. Зробити це буде ніби не просто.
А ось саме в цьому типі, потрібно виключити вибірку всіх записів, але при цьому вивести всього одну і дати можливість її редагувати. Ось така ось завдання.
Дякуємо! Змінити потрібно, щоб admin.php не попадав під умови заборони доступу. Тобто, я жорстко закрив всі сторінки мають admin.php від непрошених гостей. Бачу, що простіше переписати умова. Спасибі Kama. Успіхів!
Зачепитися на хук current_screen і використовуй функцію get_current_screen () через неї відкрий всі що хочеш відкрити, решта закрий. admin.php при цьому не обов'язково закривати. Там дивись в сторону елементів масиву base, parent_base, parent_file. Через них можна типами сторінки закрити / відкрити. Так там купу різних умов можна придумати під потреби і не чіпати admin.php, так буде в рази простіше.
Підкажіть, будь ласка, чи можливо яким-небудь цивілізований спосіб вирішити таку проблему. У мене встановлений плагін Media Library Plus. Він додає в бічне меню адмінки окремий пункт "Медіафайли +" відразу слідом за стандартним "Медіафайли".