我正在研究一个将安装在多站点实例中的插件。

如何创建仅在“网络管理员”级别可见的单个设置页面-我看到的大多数指南都与标准博客级别的插件有关。任何指向信息的链接都将很有用,否则我将最终浏览站点范围的标签以了解其工作情况。 add_site_optionget_site_optionupdate_site_option,这些函数使用wp_sitemeta。但是,据我所知,不支持register_setting,add_setting等,因此您必须手动获取和设置选项。

#1 楼

作为参考

要创建网络或全局设置,您需要执行以下操作



添加设置页面

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。就像在网络一级一样(如果有错,请发表评论)


#2 楼

好吧,我最近也面临着同样的需求,但是也不知道答案。虽然不是明确回答您的问题,但替代方法是仅在“主”博客的选项下创建选项页面,然后检查是否启用了多站点。 ),您只是在创建一个内部插件供自己使用,它是可行的。它还具有一个优点,即管理页面的所有常用功能均可用-它们在全局网络管理页面上下文中尚未提供。

#3 楼

当您使用add_submenu_page()add_menu_page()等并且希望设置页面出现在多站点仪表板中时,请考虑使用network_admin_menu挂钩而不是admin_menu

示例: br />要保存设置,可以使用network_admin_edit_{ACTION}操作钩。

参考:https://rudrastyh.com/wordpress-multisite/custom-tabs-with-options.html

#4 楼

如果您只是想在Network Admin区域中显示菜单项,那么对于主博客站点(博客ID 1),您可以将表单设置为此HTML,以保存到普通的Blog 1选项(但也可以显示设置页面)从“多站点”区域):

<form method="post" action="<?php echo admin_url('/options.php'); ?>">


当您输出设置页面的表单时。设置不会被任何通知-设置会被更新。