Как создать пункт меню и страницу в админке Wordpres через плагин?

Ссылка скопирована
1 ответ

Как создать пункт меню и страницу в админке Wordpres, используя плагин?

Дополнительно:

Как создать пункт меню и страницу в админке Wordpres через плагин?

Создаем плагин, wp-content/plugins/best-plugin/best-plugin.php:

<?php /**  * Plugin Name: Чумовой плагин  * Description: Это плагин, твердо и четко!  */  if(!defined('ABSPATH')) {   exit; }  class Best_Plugin {   protected $menu_slug = 'best-plugin';    public function __construct() {     // добавление страницы с пунктом меню     add_action('admin_menu', [$this, 'add_admin_page']);      // добавление ссылки на настройки плагина в списке плагинов     add_filter(       'plugin_action_links_' . plugin_basename(__FILE__),       [$this, 'add_settings_link']     );   }    // страница, любое содержимое страницы, обычно это винегрет из html/js/php   public function add_page() {}    // добавление страницы с пунктом меню   public function add_admin_page() {     add_options_page(       'Страница чумового плагина',       'Чумовой плагин',       'manage_options',       $this->menu_slug,       [$this, 'add_page'],       1     );   }    // добавление ссылки на настройки в списке плагинов   public function add_settings_link($links) {     $settings_link = "<a href="options-general.php?page={$this->menu_slug}">Настройки чумового плагина</a>";     array_unshift($links, $settings_link);     return $links;   } }  new Best_Plugin();

<?php /** * Plugin Name: Чумовой плагин * Description: Это плагин, твердо и четко! */ if(!defined('ABSPATH')) { exit; } class Best_Plugin { protected $menu_slug = 'best-plugin'; public function __construct() { // добавление страницы с пунктом меню add_action('admin_menu', [$this, 'add_admin_page']); // добавление ссылки на настройки плагина в списке плагинов add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), [$this, 'add_settings_link'] ); } // страница, любое содержимое страницы, обычно это винегрет из html/js/php public function add_page() {} // добавление страницы с пунктом меню public function add_admin_page() { add_options_page( 'Страница чумового плагина', 'Чумовой плагин', 'manage_options', $this->menu_slug, [$this, 'add_page'], 1 ); } // добавление ссылки на настройки в списке плагинов public function add_settings_link($links) { $settings_link = "<a href="options-general.php?page={$this->menu_slug}">Настройки чумового плагина</a>"; array_unshift($links, $settings_link); return $links; } } new Best_Plugin();

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

Пункт меню и страницу настроек в админке WordPress из плагина создают через хук admin_menu и функции add_menu_page() или add_submenu_page(). Если страница должна быть в отдельном разделе слева, используйте add_menu_page(). Если внутри “Настройки” — add_options_page() или add_submenu_page('options-general.php', ...).

Минимальный плагин:

<?php
/**
 * Plugin Name: My Admin Page
 */
 
if (!defined('ABSPATH')) {
    exit;
}
 
add_action('admin_menu', function () {
    add_menu_page(
        'Настройки плагина',
        'Мой плагин',
        'manage_options',
        'my-plugin',
        'my_plugin_render_page',
        'dashicons-admin-generic',
        80
    );
});
 
function my_plugin_render_page() {
    if (!current_user_can('manage_options')) {
        wp_die('Недостаточно прав');
    }
 
    echo '<div class="wrap">';
    echo '<h1>Настройки плагина</h1>';
    echo '<p>Здесь будет форма настроек.</p>';
    echo '</div>';
}

<?php /** * Plugin Name: My Admin Page */ if (!defined('ABSPATH')) { exit; } add_action('admin_menu', function () { add_menu_page( 'Настройки плагина', 'Мой плагин', 'manage_options', 'my-plugin', 'my_plugin_render_page', 'dashicons-admin-generic', 80 ); }); function my_plugin_render_page() { if (!current_user_can('manage_options')) { wp_die('Недостаточно прав'); } echo '<div class="wrap">'; echo '<h1>Настройки плагина</h1>'; echo '<p>Здесь будет форма настроек.</p>'; echo '</div>'; }

Если на странице будут сохраняться настройки, используйте Settings API: register_setting(), nonce, sanitization callback. Не сохраняйте $_POST напрямую. Для простой формы можно обработать сохранение через admin_post_..., но Settings API обычно аккуратнее.

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

Если нужно добавить страницу не в верхнее меню, а внутрь существующего пункта, используйте add_submenu_page(). Например, под WooCommerce, под Инструменты или под Настройки. Первый аргумент — slug родительской страницы. Для страницы настроек это options-general.php, для инструментов — tools.php.

Для подключения CSS/JS только на этой странице используйте admin_enqueue_scripts и проверяйте $hook, который возвращает add_menu_page(). Так скрипты плагина не будут грузиться во всей админке.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно