如何通过外部PHP脚本安装和激活插件

时间:2018-04-26 作者:Nick W

我正在使用自定义Php脚本通过Softaculous API安装WordPress。一旦安装,以编程方式安装和激活插件的最佳方式是什么?我可以尝试在Softaculous中设置自定义WP脚本,在mu插件文件夹中的自定义插件中设置PHP脚本,但我不希望这样做,而是在WP安装后安装/激活插件。

因此,在WP main安装之后,如果可能的话,我想从外部PHP脚本执行以下操作:

通过PHP验证管理员凭据从存储库下载特定插件安装插件激活插件TGM-Plugin-Activation 安装/激活另一个插件,但我需要能够安装/激活该插件本身。这是否可以在没有任何管理员用户点击和不使用mu插件文件夹预安装的情况下实现?

我读过以下帖子:

Activating a single plugin via php

Plugin to install a plugin

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

WP-CLI是一种简单的方法;使用WP CLI (也可用作wp-cli.phar) 为该需求提供可靠、可维护的解决方案。有关此主题的更多信息,请参见命令

  • wp plugin <command>wp-load.php 并查找函数activate_plugin($path_to_the_plugin).

    激活

    作为示例,您需要获得激活插件的所有要求,请参见下文

    define( \'WP_ADMIN\', TRUE );
    define( \'WP_NETWORK_ADMIN\', TRUE ); // Need for Multisite
    define( \'WP_USER_ADMIN\', TRUE );
    
    require_once(\'../wp-load.php\');
    require_once( \'../wp-admin/includes/admin.php\' );
    require_once( \'../wp-admin/includes/plugin.php\' );
    
    activate_plugin( \'PATH_TO_THE_PLUGIN\' );
    

    安装

    插件的安装也可以通过WP的API进行,这也有助于代码朝着正确的方向运行。

    // Include required libs for installation
    require_once( ABSPATH . \'wp-admin/includes/plugin-install.php\' );
    require_once( ABSPATH . \'wp-admin/includes/class-wp-upgrader.php\' );
    require_once( ABSPATH . \'wp-admin/includes/class-wp-ajax-upgrader-skin.php\' );
    require_once( ABSPATH . \'wp-admin/includes/class-plugin-upgrader.php\' );
    
    // Get Plugin Info
    $api = plugins_api( \'plugin_information\',
        array(
            \'slug\' => $plugin,
            \'fields\' => array(
                \'short_description\' => false,
                \'sections\' => false,
                \'requires\' => false,
                \'rating\' => false,
                \'ratings\' => false,
                \'downloaded\' => false,
                \'last_updated\' => false,
                \'added\' => false,
                \'tags\' => false,
                \'compatibility\' => false,
                \'homepage\' => false,
                \'donate_link\' => false,
            ),
        )
    );
    $skin     = new WP_Ajax_Upgrader_Skin();
    $upgrader = new Plugin_Upgrader( $skin );
    $upgrader->install( $api->download_link );
    
    安装和激活的示例请参见this class.

结束