多站点插件的“全局”设置页面

时间:2011-05-26 作者:anu

我正在开发一个插件,该插件将安装在多站点实例中。

如何创建一个仅在“网络管理员”级别可见的设置页面?我看到的大多数指南都与标准博客级别的插件相关。任何指向信息的链接都会很有用,否则我只会浏览整个站点的标签,看看它是如何在那里完成的。

[更新]

看起来sitewide\\u标记使用add_site_option, get_site_optionupdate_site_option, 这些函数使用wp\\u sitemeta。然而,据我所见,不支持register\\u设置、add\\u设置等,因此您必须手动获取和设置选项。

4 个回复
最合适的回答,由SO网友:anu 整理而成

作为参考

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

添加设置页面

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 桌子

我认为Settings API 博客级别的函数-因此使用选项表,而不是sitemeta。因此,您不能在网络级别使用选项组等(如果我弄错了,请发表评论)

SO网友:DavidJ

嗯,我最近也面临同样的需求,但也不知道答案。虽然没有明确回答您的问题,但另一种方法是只在“主”博客的选项下创建选项页面,并检查是否启用了多站点。

这不是理想的方法,但如果(像我一样)您只是创建一个供自己使用的内部插件,那么它是可行的。它还有一个优点,就是管理页面的所有常用功能都可用,而这些功能还不在全局网络管理页面上下文中。

SO网友:Misha Rudrastyh

当您使用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

SO网友:sMyles

如果您只是想在网络管理区域中显示主博客站点(博客ID 1)的菜单项,您可以将表单设置为此HTML以保存到普通博客1选项(但也可以从多站点区域显示设置页面):

<form method="post" action="<?php echo admin_url(\'/options.php\'); ?>">
当您为设置页面输出表单时。它不会显示任何关于设置已更新的通知,但它们会更新。

结束

相关推荐

Integrating plugins in themes

我找不到讨论这个的帖子,所以开始这篇。我目前正在为3.1+开发一个相当复杂的主题,我的意思是,除了样式和常规的前端功能之外,我还在主题的核心包括后端和前端的插件。因此,为了使这一点更有条理,我将其分为三个问题:集成插件是一种常见的做法吗</自动更新主题/插件有什么影响/复杂之处</在不破坏现有功能的情况下,包含每个插件的最佳方式是什么