如何通过代码激活插件?

时间:2010-11-14 作者:rsman

如果可能,如何从其他插件激活已安装的插件(意味着文件已放置在wp内容/插件目录中)?

5 个回复
最合适的回答,由SO网友:sorich87 整理而成

这就是我在一些web应用程序中所做的:

function run_activate_plugin( $plugin ) {
    $current = get_option( \'active_plugins\' );
    $plugin = plugin_basename( trim( $plugin ) );

    if ( !in_array( $plugin, $current ) ) {
        $current[] = $plugin;
        sort( $current );
        do_action( \'activate_plugin\', trim( $plugin ) );
        update_option( \'active_plugins\', $current );
        do_action( \'activate_\' . trim( $plugin ) );
        do_action( \'activated_plugin\', trim( $plugin) );
    }

    return null;
}
run_activate_plugin( \'akismet/akismet.php\' );

SO网友:Rarst

插件激活过程编码为与WP管理界面一起使用。它执行一些检查以防止启用有错误的插件(在启动时加载这样的插件可能会破坏WP)。

由以下人员处理activate_plugin() 功能(source) 在其他地方被记录为不可用。

因此,如果你想通过代码激活插件,那么目标本身就相对容易改变active_plugins 选项以包含该插件。但您必须从头开始重新创建相关的激活挂钩,并且在没有沙盒步骤的情况下激活可能会破坏站点。

SO网友:jerclarke

插件存储在“active\\u Plugins”选项的数组中。该数组包含每个活动插件的文件路径。

要激活插件,您需要确定它的路径,然后将该路径传递给activate_plugin($plugin_path).

但这说起来容易做起来难,而且(至少在2.9中)核心代码并没有让它变得容易。

在激活\\u plugin()之前,需要包含该插件。来自wp admin/includes/的php文件。您还应该检查以确保插件尚未激活。结果如下所示(YMMV):

// Define the new plugin you want to activate
$plugin_path = \'/path/to/your/new/plugin.php\';
// Get already-active plugins   
$active_plugins = get_option(\'active_plugins\');
// Make sure your plugin isn\'t active
if (isset($active_plugins[$plugin_path]))
    return;

// Include the plugin.php file so you have access to the activate_plugin() function
require_once(ABSPATH .\'/wp-admin/includes/plugin.php\');
// Activate your plugin
activate_plugin($plugin_path);
我在WP 2.9的生产中使用了它,并没有出现任何重大问题,但在我的测试中,它在WPMU中产生了非常意外的结果,所以请注意在网络安装中使用它。

SO网友:Mowshon

Wordpress提供了激活插件的功能,根据WP Codex

function plugin_activation( $plugin ) {
    if( ! function_exists(\'activate_plugin\') ) {
        require_once ABSPATH . \'wp-admin/includes/plugin.php\';
    }

    if( ! is_plugin_active( $plugin ) ) {
        activate_plugin( $plugin );
    }
}

plugin_activation(\'akismet/akismet.php\');

SO网友:Sohel Khan

您只需调用WordPress默认函数。

activate_plugin(\'akismet/akismet.php\');
请查看下面的链接以了解更多详细信息。

activate plugin

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?