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

24

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

Как создать единую страницу настроек, которая видна только на уровне «Сетевой администратор» - большинство руководств, которые я видел, относятся к стандартному плагину уровня блога. Любые ссылки на информацию были бы полезны, в противном случае я просто в конечном итоге просмотрю теги сайта, чтобы посмотреть, как это делается.

[Обновить]

Похоже, что sitewide_tags использует add_site_option, get_site_optionи update_site_option, и эти функции используют wp_sitemeta. Однако из того, что я вижу, отсутствует поддержка register_setting, add_setting и т. Д., Поэтому вы должны получить и настроить параметры вручную.

ана
источник

Ответы:

6

В качестве ссылки

Чтобы создать сетевые или глобальные настройки, вам нужно сделать следующее

  • Добавить страницу настроек

    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. Таким образом, вы не можете использовать группы опций и тому подобное на сетевом уровне ( пожалуйста, прокомментируйте, если я ошибся )
ана
источник
0

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

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

DavidJ
источник
0

Когда вы используете add_submenu_page()и add_menu_page()т. Д. И ожидаете, что страницы настроек появятся на вашей многосайтовой панели, рассмотрите возможность использования network_admin_menuhook вместоadmin_menu

Пример:

add_action( 'network_admin_menu', 'network_settings_page' );
function network_settings_page(){
    add_submenu_page(

        ...
    )
}

Для сохранения настроек вы можете использовать network_admin_edit_{ACTION}action hook.

Ссылка: https://rudrastyh.com/wordpress-multisite/custom-tabs-with-options.html

Миша Рудрастых
источник