You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程方式仅在WordPress多站点子站点激活插件

问题根因

你的activate_plugin()参数传错了,直接触发了网络激活逻辑:
这个函数的第三个参数是$network_wide,接收布尔值,传true就会执行全网络激活,你现在传的是is_multisite(),只要当前是多站点环境,这个返回值永远是true,自然会把插件在所有子站点激活、标记为网络激活状态。

另外你代码里的插件路径还有拼写错误,Akismet的入口文件正确路径是akismet/akismet.php,你写的aksimet.php少了个k,正常会触发插件不存在的报错。

单站点激活正确写法

要在多站点环境下给指定单个子站点激活插件、不触发网络激活,必须先切换到目标子站点的运行上下文,明确把网络激活参数设为false执行激活,操作完切回原站点避免影响其他逻辑,参考代码:

// 改成你需要激活插件的目标子站点ID
$target_subsite_id = 3;
// 记录当前所在站点,操作完切回
$current_site_id = get_current_blog_id();

// 切换到目标子站点
switch_to_blog( $target_subsite_id );

// 执行激活,第三个参数强制传false,禁止网络激活
activate_plugin(
    'akismet/akismet.php',
    '',
    false,
    false
);

// 切回原站点
restore_current_blog();
补充说明
  • 不要跳过switch_to_blog()步骤直接调用函数,如果你在网络管理面板上下文执行,哪怕$network_wide传false,激活的也不是你想要的子站点。
  • 激活完成后必须调用restore_current_blog()复位站点上下文,否则后续的站点相关逻辑都会跑到你切换的子站点上,出现异常。

内容的提问来源于stack exchange,提问作者dineshkashera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:15:31