web-dev-qa-db-ja.com

外部経由でプラグインをインストールして有効にする方法 PHP スクリプト

私はSoftaculous APIを介してWordPressをインストールするためにカスタムPhpスクリプトを使用しています。いったんインストールしたら、プログラムでプラグインをインストールしてアクティブにするための最良の方法は何ですか?私はmu-pluginsフォルダのカスタムプラグインのWPスクリプトを使ってSoftaculousでカスタムPHPスクリプトを設定することを試みることができますが、代わりにインストールします/ [WPインストール後にプラグインを有効にします。

それで私はWPメインインストールの後にそして可能であれば外部のPHPスクリプトからしたいのです:

  1. pHP経由で管理者資格で認証する
  2. リポジトリから特定のプラグインをダウンロードする
  3. プラグインをインストールする
  4. プラグインを有効にする

たぶん私はTGM-Plugin-Activationを使って別のプラグインをインストール/起動することができますが、そのプラグイン自体をインストール/起動することができる必要があります。これは、管理ユーザーがクリックしたり、mu-pluginsフォルダのプレインストールを使用しなくても可能になりますか?

私はこれらの記事を読みました:

phpで単一のプラグインを有効にする

プラグインをインストールするためのプラグイン

1
Nick W

WP CLI

簡単な方法 WP CLIwp-cli.pharとしても入手可能)を使用して、この要件に対する堅実で保守可能な解決策を入手してください。このトピックの詳細については、コマンドで見つけるでしょう


WP API

あなたが必要とするならば、カスタムスクリプトがwp-load.phpを通してWP AP​​Iをロードするために必要であり、そして関数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' );

Installation

プラグインのインストールは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 にあります。

3
bueltge