По умолчанию доступ к созданному кастомному меню для редактирования закрыт. Чтобы открыть его необходимо прописать capability (Права пользователя (возможности)) для этого буду использовать add_filter. Пример возможного кода.
<?
add_action( 'admin_menu', array( $this, 'add_plugin_page' ) );
add_action( 'admin_init', array( $this, 'page_init' ) );
// Уровень доступа для редактора
add_filter( 'option_page_capability_'.'my_option_group', 'my_page_capability' ); // my_option_group название группы page_init->register_setting->my_option_group
// Изменим права
function my_page_capability( $capability ) {
return 'edit_posts';
}
public function add_plugin_page()
{
add_menu_page(
'Title при переходе в меню', //Текст, который будет использован в теге <title> на странице, относящейся к пункту меню
'Название в сайдбаре', //Название пункта меню в сайдбаре админ-панели.
'edit_posts', // Уровень доступа для редакторов | Все уровни доступа можно посмотреть https://wordpress.org/support/article/roles-and-capabilities/
'my-setting-admin', // Уникальное название (slug), по которому затем можно обращаться к этому меню | Пример: /wp-admin/admin.php?page=my-setting-admin
'create_admin_page' // Название функции, которая выводит контент страницы пункта меню.
);
}
public function page_init()
{
register_setting(
'my_option_group', // Название группы, к которой будет принадлежать опция
'my_option_name', // Название опции, которая будет сохраняться в БД
);
}
// Render the "Custom Plugins Addon" admin page.
function create_admin_page() {
?>
<div class="wrap">
<h1>Ваш плагин</h1>
<?php settings_errors(); ?>
<form method="post" action="options.php">
<input id='fieldName' type='text' name='my_option_name[fieldName]' value="<?=$this->options['fieldName']?>" />
<?php submit_button(); ?>
</form>
</div>
<?php
}

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