我正在开发wordpress file monitor plus 插件。
它的目的是扫描修改过的文件,对于WP的单个安装来说效果很好。但是,当您查看多站点时,并不希望在所有子站点上启用它,因为它们都共享相同的文件,而且(老实说)只有网络管理员才希望收到文件更改通知。
所以我的问题是:
我将如何编程,使其仅允许从多站点安装的根站点安装/运行?所以:这意味着不允许网络安装,只允许从根博客激活。
有人知道我怎样才能做到这一点吗?
我正在开发wordpress file monitor plus 插件。
它的目的是扫描修改过的文件,对于WP的单个安装来说效果很好。但是,当您查看多站点时,并不希望在所有子站点上启用它,因为它们都共享相同的文件,而且(老实说)只有网络管理员才希望收到文件更改通知。
所以我的问题是:
我将如何编程,使其仅允许从多站点安装的根站点安装/运行?所以:这意味着不允许网络安装,只允许从根博客激活。
有人知道我怎样才能做到这一点吗?
您可以检查常量SITE_ID_CURRENT_SITE
匹配项get_current_site()->id
. 以下为激活操作。在运行期间,您必须再次检查它。
register_activation_hook( __FILE__, \'force_main_site_installation\' );
function force_main_site_installation()
{
if ( defined( \'SITE_ID_CURRENT_SITE\' )
and SITE_ID_CURRENT_SITE !== get_current_site()->id
)
{
if ( function_exists(\'deactivate_plugins\') )
{
deactivate_plugins( __FILE__ );
}
die( \'Install this plugin on the main site only.\' );
}
}
第一the explanation for the uninstall/activation/deactivation hooks.
第二:检查is_blog_installed( $blog_ID );
然后调查所有get_blog_whatever();
并获取\\u blogaddress\\u whatever();`函数(我猜您使用phpstorm作为IDE,所以应该可以使用函数的自动完成)。
Edit: 您还可以尝试通过向注册管理页面来限制可用菜单network_admin_menu()
(仅在以下情况下触发is_network_admin()
), user_admin_menu();
(仅在以下情况下触发is_user_admin()
) 而不是admin_menu();
.
只有此解决方案对我有效:
register_activation_hook( __FILE__, function () {
if ( is_multisite() && ! strpos( $_SERVER[\'REQUEST_URI\'], \'wp-admin/network/plugins.php\' ) ) {
die ( __( \'<script>alert("Activate this plugin only from the NETWORK DASHBOARD.");</script>\') );
}
// ...............
});
我们正在使用Atlas HTML站点地图插件,该插件使用transients API缓存站点地图,调用如下:set_transient( \'dmac_html_sitemap\', $output, 60*60*24*7 ); 现在,我们还有一个多站点设置,我想知道瞬态存储在哪里,WP multisite是否将它们分开。它将选项分开,因为每个站点(博客)都有自己的DB表前缀(例如wp\\U 29\\U选项)。我在某个地方读到,瞬态可以用memcached存储,所以我猜后端存储是可插入的。这个问