Создание пользовательских страниц панели администратора без создания плагина?

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

У меня на сайте есть функциональность, которую я хотел бы предоставить администраторам без необходимости обращаться непосредственно к базе данных. Думаю, самый чистый способ — это создать новые страницы в панели администрирования WP.

Я нашел много документации о том, как создавать страницы меню (add_menu_page()), как создавать формы в этих страницах меню, но большинство документов предполагают, что я создаю плагин.

Также я не могу найти ответ на фундаментальный вопрос — где именно я пишу код для указанных пользовательских страниц меню? Это должно быть где-то в /wp-admin?

Как только я разберусь с настройкой, я смогу реализовать все функционально, но я застрял на этапе создания этой страницы меню. Есть ли какая-то помощь?

Как вы видели, вам просто нужно использовать функцию add_menu_page (),

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

Вы можете создать новый файл в своей теме и использовать include_once в конце functions.php или просто добавить эти функции непосредственно в functions.php

Вопрос не совсем ясен в том, чего именно требуется добиться. Как указано в другом ответе, вам не обязательно создавать плагин, чтобы использовать add_menu_page(). Под «не обращаться к базе данных» я предполагаю, что это имеется в виду.

Но это также означает, что вы можете иметь администраторскую функциональность в любой части вашего сайта, например, удалять или создавать посты без входа в админ-меню. Все, что вам нужно сделать, это включить if (current_user_can('capability')), чтобы предоставить необходимую функциональность для определенных групп пользователей, где это необходимо, и вам даже не нужно использовать add_menu_page(). Я предполагаю, что это более или менее то, что требуется в вопросе.

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

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

Теория

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

Для добавления пользовательских страниц в панели администрирования WordPress используется функция add_menu_page(). Она позволяет создать новую страницу в меню администрирования, которая может содержать любые необходимые формы или интерфейсы для взаимодействия с пользовательскими данными.

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

Пример

Рассмотрим пример, как можно добавить простую страницу администрирования прямо в файл functions.php вашей темы.

  1. Откройте functions.php вашей темы: Это основной файл, куда вы можете добавлять собственный PHP код.

  2. Добавьте код для новой страницы меню: Используйте функцию add_menu_page() для создания новой страницы. Это можно сделать, добавив следующий код в конец файла functions.php.

add_action('admin_menu', 'my_custom_menu_page');

function my_custom_menu_page() {
    add_menu_page(
        'Моя Пользовательская Страница', // Название страницы.
        'Пользовательская Страница',     // Название пункта меню.
        'manage_options',                // Право доступа (например, только админу).
        'custompage',                    // Уникальный слаг (идентификатор) страницы.
        'my_custom_page_html',           // Функция, которая отображает контент страницы.
        'dashicons-admin-generic',       // Иконка меню.
        20                               // Позиция в меню.
    );
}

function my_custom_page_html() {
    if (!current_user_can('manage_options')) {
        return;
    }
    echo '<div class="wrap"><h1>Добро пожаловать на пользовательскую страницу!</h1><form method="post" action="options.php">';
    // Здесь могут быть размещены элементы формы, поля ввода и другие элементы интерфейса.
    echo '</form></div>';
}
  1. Проверяйте права доступа: Убедитесь, что функция, отображающая контент страницы, проверяет права доступа пользователя, что особенно важно для безопасности сайта (current_user_can('manage_options')).

Применение

После добавления описанного выше кода в ваш файл functions.php, вы увидите новую страницу в меню администрирования WordPress. Данная страница будет доступна только тем пользователям, которые обладают правом ‘manage_options’ (как правило, это администраторы). На этой странице вы можете разместить любую функциональность или интерфейсы, которые вам необходимы, например, формы для настройки каких-то параметров сайта, интерфейсы для взаимодействия с внешними API, а также другие элементы управления, доступные только избранным пользователям.

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

Важно помнить, что код в functions.php рекомендуется использовать для функций, специфичных для темы. Если ваша пользовательская админ-страница нужна на постоянной основе вне зависимости от используемой темы, возможно, стоит рассмотреть создание своего плагина, даже небольшого, чтобы обеспечить миграцию функционала при смене темы.

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

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

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