Дайте редакторам доступ к определенному плагину – переключите “admin.php” на “edit.php”

Вопрос или проблема

Я использую плагин Business Opening Hours. Я добился его появления в боковой панели с помощью плагина Client Dash, но когда Редактор нажимает на него, он не может к нему получить доступ, только Администраторы, как я могу это изменить?

Я нашел некоторые фрагменты кода в плагине, могу ли я что-то изменить здесь?

if( is_admin() )
$bizohours_settings_page = new BizoHoursSettingPage();

public function __construct()
    {
        add_action( 'admin_menu', array( $this, 'bizohours_plugin_page' ) );
        add_action( 'admin_init', array( $this, 'bizohours_page_init' ) );
    }

/**
 * Добавить страницу плагина
 */
public function bizohours_plugin_page()
{
    // Эта страница будет в "Меню Пандемии"
    add_menu_page(
        __('Настройки Админа', 'bizo-hours'), 
        __('Часы работы', 'bizo-hours'), 
        'manage_options', 
        'bizohours-setting-admin', 
        array( $this, 'bizohours_admin_page' ),
        plugins_url( 'images/icon.png',__FILE__)
    );
}

Как я уже упомянул, это не лучший подход редактировать исходные коды плагина, так как они будут перезаписаны, если вы получите обновление от автора.

Тем не менее, чтобы разрешить плагину Business Opening Hours отображаться для ваших Редакторов, откройте /business-opening-hours/bizo-hours.php и измените следующие строки. На момент написания этой статьи текущая версия плагина – v1.0.7:

Строки 614-616

Замените

/**** Создать экземпляр класса ****/
if( is_admin() )
    $bizohours_settings_page = new BizoHoursSettingPage();

На

/**** Создать экземпляр класса ****/
$bizohours_settings_page = new BizoHoursSettingPage();

Строки 26-40

Замените

/**
 * Добавить страницу плагина
 */
public function bizohours_plugin_page()
{
    // Эта страница будет в "Меню Пандемии"
    add_menu_page(
        __('Настройки Админа', 'bizo-hours'), 
        __('Часы работы', 'bizo-hours'), 
        'manage_options', 
        'bizohours-setting-admin', 
        array( $this, 'bizohours_admin_page' ),
        plugins_url( 'images/icon.png',__FILE__)
    );
}

На

/**
 * Добавить страницу плагина
 */
public function bizohours_plugin_page()
{
    // Эта страница будет в "Меню Пандемии"
    add_menu_page(
        __('Настройки Админа', 'bizo-hours'), 
        __('Часы работы', 'bizo-hours'), 
        'edit_others_pages', 
        'bizohours-setting-admin', 
        array( $this, 'bizohours_admin_page' ),
        plugins_url( 'images/icon.png',__FILE__)
    );
}

.

Ответ или решение

Как предоставить редакторам доступ к плагину Business Opening Hours в WordPress

Ваша задача заключается в том, чтобы предоставить доступ к плагину Business Opening Hours пользователям с ролью «Редактор». Давайте рассмотрим, как это можно реализовать.

Понимание проблемы

По умолчанию, разработчики плагина ограничивают доступ к его страницам, требуя наличие прав администратора (manage_options). Это значит, что только администраторы могут редактировать настройки плагина. Однако, в вашей ситуации необходимо предоставить возможность редакторам изменять настройки плагина, не предоставляя им полномочий администратора.

Рекомендации по изменению кода

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

Тем не менее, если вы все же решите внести изменения в код плагина Business Opening Hours, обратите внимание на следующие участки кода.

Шаг 1: Изменение прав доступа на страницу плагина

Изначально, код, который отвечает за добавление страницы плагина в меню администрирования, выглядит следующим образом:

add_menu_page(
    __('Settings Admin', 'bizo-hours'), 
    __('Öffnungszeiten', 'bizo-hours'), 
    'manage_options', 
    'bizohours-setting-admin', 
    array( $this, 'bizohours_admin_page' ),
    plugins_url( 'images/icon.png',__FILE__)
);

Здесь вы видите, что для доступа к странице плагина используется право manage_options. Чтобы изменить это, вам нужно заменить эту строку на:

add_menu_page(
    __('Settings Admin', 'bizo-hours'), 
    __('Business Hours', 'bizo-hours'), 
    'edit_others_pages', 
    'bizohours-setting-admin', 
    array( $this, 'bizohours_admin_page' ),
    plugins_url( 'images/icon.png',__FILE__)
);

Эта замена позволяет пользователям с правами редактирования других страниц (таким как редакторы) получить доступ к настрокам вашего плагина.

Шаг 2: Устранение ограничения инстанцирования класса

Также вам следует изменить участок кода, где происходит создание экземпляра класса плагина. Вам нужно изменить следующие строчки:

if( is_admin() )
    $bizohours_settings_page = new BizoHoursSettingPage();

на

$bizohours_settings_page = new BizoHoursSettingPage();

Это изменение позволит инициализировать плагин даже в условиях, когда отфильтрованы ненужные права доступа.

Заключение

После того как вы внесете эти изменения, редакторы смогут получить доступ к настройкам плагина Business Opening Hours. Тем не менее, всегда помните о важности создания резервных копий перед внесением изменений в код, а также об использовании дочерних тем или пользовательских плагинов для реализации своих решений. Это обеспечит вашу систему от неизбежных проблем с совместимостью при обновлении плагинов или вашей темы.

Если у вас есть дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться в сообщество разработчиков WordPress или к автору плагина для получения поддержки.

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

Капча загружается...