добавляем пункт меню вручную

Добавляем пункты меню в админку wordpress (без плагинов)

Здравствуйте, сегодня поговорим о том, как добавить новый пункт меню в панели управления wordpress (админке) без использования плагинов.

Скачать исходники для статьи можно ниже

Для этого необходимо подкорректировать файл functions.php (или же создать плагин).

 

Чтобы добавить пункт меню администрирование, необходимо сделать три вещи в файле functions.php:

1. Создать функцию, которая содержит код для создания меню (в примере ниже – это function my_plugin_menu).

2. Зарегистрировать функцию, использующую хук “действие” (add action) с параметром admin_menu, при этом данных хук должен располагаться выше функции, указанной в пункте 1.

3. Создать HTML для этой страницы, которая отображается при нажатии на новый пункт меню.

 

Вот пример кода создания пункта меню (верхнего уровня) с названием “My Plugin” (можете вставить его в файл functions.php и посмотреть, что получиться – желательно это делать на тестовом сайте, потому что сайт может сломаться):

/** Пункт 2. */
add_action( 'admin_menu', 'my_plugin_menu' );

/** Пункт 1. */
function my_plugin_menu() {
	add_menu_page( 'My Plugin Options', 'My Plugin', 'manage_options', 'my-unique-identifier', 'my_plugin_options' );
}

/** Пункт 3. */
function my_plugin_options() {
	if ( !current_user_can( 'manage_options' ) )  {
		wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
	}
	echo '</pre>
<div class="wrap">';
 echo '
Here is where the form would go if I actually had options.

';
 echo '</div>
<pre>
';
}

Теперь давайте более подробно разберем данный код.

 

Пункт 1: функция my_plugin_menu()

Название функции может быть любым, а не только my_plugin_menu.

В данной функции мы указываем код – add_menu_page () – это стандартная функция wordpress, которая добавляет пункт меню верхнего уровня (такие же как “Панель”, “Записи”, “Медиафайлы”, “Страницы” и др., которые вы можете видеть в левом меню вашей админки ).

 

Кроме данной функции здесь можно также использовать и другие:

add_submenu_page() – добавляет подменю к пунктам меню верхнего уровня, то есть например: если взять пункт “Записи”, то у него есть 4 подпункта – “Все записи”, “Добавить новую”, “Рубрики” и “Метки”.

 

Также есть более узкие функции:

add_options_page() – добавляет подпункт в пункт “Настройки” (Параметры, Settings).

add_management_page() – добавляет подпункт в пункт “Инструменты” (Tools).

add_theme_page() – добавляет подпункт в пункт “Внешний вид” (Appearance).

 

Для проверки того, как работают три последних функции, можете поменять в вышеуказанном примере код add_menu_page на один из них, ну например на add_options_page.

 

У каждой из 5 вышеуказанных функций есть свои параметры – атрибуты:

add_menu_page(page_title, menu_title, access_level/capability, file, [function]);

add_submenu_page(parent, page_title, menu_title, access_level/capability, file, [function]);

add_options_page(page_title, menu_title, access_level/capability, file, [function]);

add_management_page(page_title, menu_title, access_level/capability, file, [function]);

add_theme_page( page_title, menu_title, access_level/capability, file, [function]);

 

Как видите почти все атрибуты одинаковые, давайте рассмотрим их подробнее:

page_title – это заголовок страницы, когда пункт меню активен.

menu_title – название пункта/подпункта меню.

access_level/capability – данный атрибут задает, кто сможет видеть данный пункт/подпункт меню, но он указывается не с помощью ролей пользователей, а их возможностей, например: если вы хотите указать, что данный пункт/подпункт может видеть только админ, то указывается – manage_options (управлять настройками, параметрами).

Более подробно о возможностях для каждой роли пользователей читайте тут – “codex.wordpress.org/Roles_and_Capabilities”.

file – PHP файл, который будет отвечает за отображение содержимого страницы данного пункта/подпункта меню.

[function] – функция, которая отвечает за отображение содержимого страницы данного пункта/подпункта меню.

parent – имя admin файла, который отображает меню верхнего уровня, в который вы хотите вставить подменю или файл плагина, если это подменю вдаваясь в пользовательское меню верхнего уровня. (Примеры: index.php, post.php, edit.php, themes.php, plugins.php и др.)

 

Пункт 2: зацепка add_action

Здесь просто идет зацепка (хук) на стандартную функцию wordpress для вывода меню – admin_menu.

То есть если wordpress выводит меню в админке, то он должен выполнить нашу функцию (в данном примере – my_plugin_menu).

 

Пункт 3: function my_plugin_options

Здесь у нас прописывается следующее – если вы админ, то нужно вывести следующее:

echo '
Here is where the form would go if I actually had options.

';

То есть предложение – “Here is where the form would go if I actually had options.” – вместо него можно написать что-нибудь на русском, а также можно использовать код php.

 

Пример 2 на закрепление вышеуказанного материала.

Вот более сложный пример:

// Hook for adding admin menus
add_action('admin_menu', 'mt_add_pages');

// action function for above hook
function mt_add_pages() {
    // Add a new submenu under Options:
    add_options_page('Test Options', 'Test Options', 8, 'testoptions', 'mt_options_page');

    // Add a new submenu under Manage:
    add_management_page('Test Manage', 'Test Manage', 8, 'testmanage', 'mt_manage_page');

    // Add a new top-level menu (ill-advised):
    add_menu_page('Test Toplevel', 'Test Toplevel', 8, __FILE__, 'mt_toplevel_page');

    // Add a submenu to the custom top-level menu:
    add_submenu_page(__FILE__, 'Test Sublevel', 'Test Sublevel', 8, 'sub-page', 'mt_sublevel_page');

    // Add a second submenu to the custom top-level menu:
    add_submenu_page(__FILE__, 'Test Sublevel 2', 'Test Sublevel 2', 8, 'sub-page2', 'mt_sublevel_page2');
}

// mt_options_page() displays the page content for the Test Options submenu
function mt_options_page() {
    echo "<h2>Test Options</h2>";
}

// mt_manage_page() displays the page content for the Test Manage submenu
function mt_manage_page() {
    echo "<h2>Test Manage</h2>";
}

// mt_toplevel_page() displays the page content for the custom Test Toplevel menu
function mt_toplevel_page() {
    echo "<h2>Test Toplevel</h2>";
}

// mt_sublevel_page() displays the page content for the first submenu
// of the custom Test Toplevel menu
function mt_sublevel_page() {
    echo "<h2>Test Sublevel</h2>";
}

// mt_sublevel_page2() displays the page content for the second submenu
// of the custom Test Toplevel menu
function mt_sublevel_page2() {
    echo "<h2>Test Sublevel 2</h2>";
}

Добавляет пункт верхнего уровня “Test Top Level” с 3 подпунктами в меню панели управления, а также добавляет подпункт “Test options” в пункт “Настройки” и подпункт “Test Manage” в пункт “Инструменты”.

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

Добавить комментарий