WordPress功能函數(shù)activate_plugin ()
WordPress功能函數(shù)activate_plugin (),在“沙箱”中嘗試激活插件,成功后重新定向。
用法:
activate_plugin( string $plugin, string $redirect = '', bool $network_wide = false, bool $silent = false )
描述:
已經(jīng)激活的插件將不再嘗試被激活。
它的工作方式是在嘗試包含插件文件之前將重定向設(shè)置為錯(cuò)誤。如果插件失敗,那么重定向?qū)⒉粫?huì)被成功消息覆蓋。此外,選項(xiàng)不會(huì)被更新,激活鉤子不會(huì)被調(diào)用插件錯(cuò)誤。
應(yīng)該注意的是,下面的代碼無(wú)論如何都不能真正防止文件中的錯(cuò)誤。代碼不應(yīng)該用在其他地方來(lái)復(fù)制使用重定向工作的“沙箱”。{@source 13 1}
如果發(fā)現(xiàn)了任何錯(cuò)誤或輸出了文本,那么將捕獲錯(cuò)誤,以確保成功重定向?qū)⒏洛e(cuò)誤重定向。
參數(shù):
$plugin
(string) (必需) 相對(duì)于插件目錄的插件文件路徑。
$redirect
(string) (可選) 重定向到的URL。
默認(rèn)值:“
$network_wide
(bool) (可選) 是否為網(wǎng)絡(luò)中的所有站點(diǎn)啟用插件,或僅為當(dāng)前站點(diǎn)啟用插件。多點(diǎn)。
默認(rèn)值:假
$silent
(bool)(可選)是否阻止調(diào)用激活鉤子。
默認(rèn)值:假
返回
(null|WP_Error)成功返回null,無(wú)效文件返回WP_Error。
更多的信息:
由于多種原因,插件將無(wú)法激活以下通用響應(yīng):解析頭信息的問(wèn)題,' plugin '緩存的問(wèn)題(見(jiàn)wordpress對(duì)象緩存),或者權(quán)限錯(cuò)誤。
The plugin does not have a valid header.
插件緩存的問(wèn)題,是當(dāng)插件文件被添加或修改時(shí)引起的,在所有插件都被初始化之后。這可以通過(guò)重新加載頁(yè)面、將activate_plugin()作為一個(gè)單獨(dú)的AJAX請(qǐng)求發(fā)送來(lái)解決,或者在必要時(shí)手動(dòng)更新緩存來(lái)解決。在下面的例子:
$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' => '',
來(lái)源:
文件: 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() );
}
更新日志:
用戶貢獻(xiàn)的筆記
(由Codex - 5年前貢獻(xiàn))
基本的例子
嘗試激活插件,失敗返回WP_Error
$result = activate_plugin( 'plugin-dir/plugin-file.php' );
if ( is_wp_error( $result ) ) {
// Process Error
}
(由ttodua貢獻(xiàn)- 4個(gè)月前)
朋友們,如果你想使用重定向(在插件激活時(shí)),你應(yīng)該只在你的插件沒(méi)有通過(guò)“批量激活”被“激活”的情況下使用重定向!
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();
}
}