activate_plugin( string $plugin, string $redirect = '', bool $network_wide = false, bool $silent = false )

尝试在“沙盒”中激活插件并在成功时重定向。

描述

已经激活的插件不会再次尝试激活。

它的工作方式是在尝试包含插件文件之前将重定向设置为错误。 如果插件失败,则重定向不会被成功消息覆盖。 此外,选项不会更新,并且不会在插件错误时调用激活挂钩。

应该注意的是,下面的代码绝不会真正防止文件中的错误。 该代码不应在其他地方使用来复制使用重定向工作的“沙箱”。 {@source 13 1}

如果发现任何错误或输出文本,则将其捕获以确保成功重定向将更新错误重定向。

参数

$plugin

(字符串)(必需)插件文件相对于插件目录的路径。

$redirect

(字符串)(可选)要重定向到的 URL。
默认值: ”

$network_wide

(bool) (可选)是否为网络中的所有站点或仅当前站点启用插件。 仅限多站点。
默认值:false

$silent

(bool) (可选) 是否阻止调用激活钩子。
默认值:false

返回

(null|WP_Error) Null on success, WP_Error on invalid file.

更多信息

由于多种原因,插件将无法激活以下通用响应,包括: 解析标头信息时出现问题,“插件”缓存问题(请参阅 WordPress 对象缓存)或权限错误。

插件缓存的问题是在插件全部初始化后添加或修改插件文件时引起的。 这可以通过重新加载页面、将 activate_plugin() 作为单独的 AJAX 请求发送或在必要时手动更新缓存来解决。 下面的例子:

$cache_plugins = wp_cache_get('plugins', 'plugins');
if (!empty($cache_plugins)) {
    $new_plugin = array(
        'Name' => $plugin_name,
        'PluginURI' => $plugin_uri,
        'Version' => $plugin_version,
        'Description' => $plugin_description,
        'Author' => $author_name,
        'AuthorURI' => $author_uri,
        'TextDomain' => '',
        'DomainPath' => '',
        'Network' => '',
        'Title' => $plugin_name,
        'AuthorName' => $author_name,
    );
    $cache_plugins[''][$plugin_path] = $new_plugin;
    wp_cache_set('plugins', $cache_plugins, 'plugins');
}