WordPress功能函数activate_plugin (),在“沙箱”中尝试激活插件,成功后重新定向。

用法:

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

描述:

已经激活的插件将不再尝试被激活。

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

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

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

参数:

$plugin

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

$redirect

(string) (可选) 重定向到的URL。

默认值:“

$network_wide

(bool) (可选) 是否为网络中的所有站点启用插件,或仅为当前站点启用插件。多点。

默认值:假

$silent

(bool)(可选)是否阻止调用激活钩子。

默认值:假

返回

(null|WP_Error)成功返回null,无效文件返回WP_Error。

更多的信息:

由于多种原因,插件将无法激活以下通用响应:解析头信息的问题,' plugin '缓存的问题(见wordpress对象缓存),或者权限错误。

The plugin does not have a valid header.

插件缓存的问题,是当插件文件被添加或修改时引起的,在所有插件都被初始化之后。这可以通过重新加载页面、将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' => '',

来源:

文件: wp-admin/includes/plugin.php

function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silent = false ) {

$plugin = plugin_basename( trim( $plugin ) );

if ( is_multisite() && ( $network_wide || is_network_only_plugin( $plugin ) ) ) {

$network_wide = true;

$current = get_site_option( 'active_sitewide_plugins', array() );

$_GET['networkwide'] = 1; // Back compat for plugins looking for this value.

} else {

$current = get_option( 'active_plugins', array() );

}

更新日志:

WordPress功能函数activate_plugin () (https://www.wpzt.net/) WordPress开发教程 第1张

用户贡献的笔记

(由Codex - 5年前贡献)

基本的例子

尝试激活插件,失败返回WP_Error

$result = activate_plugin( 'plugin-dir/plugin-file.php' );

if ( is_wp_error( $result ) ) {

// Process Error

}

(由ttodua贡献- 4个月前)

朋友们,如果你想使用重定向(在插件激活时),你应该只在你的插件没有通过“批量激活”被“激活”的情况下使用重定向!

add_action( 'activated_plugin', 'wpdocs_my_redirection' );

function wpdocs_my_redirection( $plugin ) {

$table = new WP_Plugins_List_Table;

if ( plugin_basename( __FILE__ ) === $plugin && 'activated-selected' !== $table->current_action() ) {

wp_redirect( ... );

exit();

}

}