Страница "Глобальные" настройки для многоузлового плагина
Я работаю над плагином, который будет установлен в многоузловом экземпляре.
Как создать единую страницу настроек, которая видна только на уровне "Администратор сети" - большинство руководств, которые я видел, относятся к стандартному плагину уровня блога. Любые ссылки на информацию были бы полезны, в противном случае я просто просмотрю теги по всему сайту, чтобы посмотреть, как это делается там.
[Обновление]
Похоже, что sitewide_tags использует add_site_option
, get_site_option
и update_site_option
, и эти функции используют wp_sitemeta. Однако, из того, что я вижу, нет поддержки для register_setting, add_setting и т. Д., Поэтому вам нужно получить и настроить параметры вручную.
4 answers
В качестве ссылки
Чтобы создать сетевые или глобальные настройки, вам необходимо выполнить следующие действия
-
Добавить страницу настроек
add_submenu_page( 'settings.php'... # cf options.php for blog level`
-
Добавьте глобальную опцию
add_site_option($key,$value)
-
Обновить глобальную опцию
update_site_option($key,$value)
-
Получить опцию сайта
get_site_option($key)
Глобальные настройки сохраняются в таблице sitemeta
(индивидуальные настройки блога сохраняются в таблице <blog_id>_options
- Я думаю, что функции API настроек на уровне блога - поэтому использует таблицу параметров, а не sitemeta. Таким образом, вы не можете использовать группы опций и тому подобное на сетевом уровне ( пожалуйста, прокомментируйте, если я неправильно понял)
Ну, недавно я столкнулся с такой же необходимостью, но тоже не знал ответа. Хотя это и не является явным ответом на ваш вопрос, альтернативой является просто создание страниц параметров в разделе "Основные" параметры блога и проверка того, включена ли поддержка нескольких сайтов.
Не идеальный способ, но если (как и я) вы просто создавали внутренний плагин для собственного использования, это выполнимо. Это также имеет то преимущество, что доступны все обычные функции для страниц администратора, которых еще нет в контекст страницы администратора глобальной сети.
Когда вы используете add_submenu_page()
, add_menu_page()
и т.д. и ожидайте, что страницы настроек появятся на вашей многоузловой панели мониторинга, рассмотрите возможность использования network_admin_menu
крючка вместо admin_menu
Пример:
add_action( 'network_admin_menu', 'network_settings_page' );
function network_settings_page(){
add_submenu_page(
...
)
}
Для сохранения настроек вы можете использовать network_admin_edit_{ACTION}
крючок действия.
Ссылка: https://rudrastyh.com/wordpress-multisite/custom-tabs-with-options.html
Если вы просто хотите отобразить пункт меню в области администрирования сети для основного сайта блога (идентификатор блога 1), вы можете просто настроить свою форму на этот HTML-код, чтобы сохранить параметры обычного блога 1 (но также отобразить страницу настроек из области нескольких сайтов):
<form method="post" action="<?php echo admin_url('/options.php'); ?>">
При выводе формы для страницы настроек. Он не будет показывать никаких уведомлений о том, что настройки обновлены, но они будут обновлены.