Вопрос или проблема
У меня на сайте есть функциональность, которую я хотел бы предоставить администраторам без необходимости обращаться непосредственно к базе данных. Думаю, самый чистый способ — это создать новые страницы в панели администрирования 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 вашей темы.
-
Откройте functions.php вашей темы: Это основной файл, куда вы можете добавлять собственный PHP код.
-
Добавьте код для новой страницы меню: Используйте функцию
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>';
}
- Проверяйте права доступа: Убедитесь, что функция, отображающая контент страницы, проверяет права доступа пользователя, что особенно важно для безопасности сайта (
current_user_can('manage_options')
).
Применение
После добавления описанного выше кода в ваш файл functions.php, вы увидите новую страницу в меню администрирования WordPress. Данная страница будет доступна только тем пользователям, которые обладают правом ‘manage_options’ (как правило, это администраторы). На этой странице вы можете разместить любую функциональность или интерфейсы, которые вам необходимы, например, формы для настройки каких-то параметров сайта, интерфейсы для взаимодействия с внешними API, а также другие элементы управления, доступные только избранным пользователям.
При необходимости расширения функционала вы можете использовать встроенные в WordPress функции и хуки для получения информации из базы данных без непосредственного обращения к ней. Это не только облегчает работу с системой управления контентом, но и делает ваш код более безопасным и поддерживаемым.
Важно помнить, что код в functions.php рекомендуется использовать для функций, специфичных для темы. Если ваша пользовательская админ-страница нужна на постоянной основе вне зависимости от используемой темы, возможно, стоит рассмотреть создание своего плагина, даже небольшого, чтобы обеспечить миграцию функционала при смене темы.
В заключение стоит отметить, что интеграция пользовательских страниц админ-панели напрямую в тему требует аккуратности и осознания возможных последствий для безопасности и производительности вашего сайта. Всегда уделяйте особое внимание правам доступа и безопасности данных.