web-dev-qa-db-fra.com

Comment installer et activer un plugin via un serveur externe PHP scénario

J'utilise un script PHP personnalisé pour installer WordPress via l'API Softaculous. Une fois installé, quel est le meilleur moyen d'installer et d'activer un plugin par programme? Je pourrais essayer de configurer un script personnalisé WP dans Softaculous avec un script PHP dans un plugin personnalisé situé dans un dossier mu-plugins, mais je préférerais ne pas le faire et installer plutôt/active le plugin après l'installation WP.

Donc, ce que je voudrais faire après l’installation principale WP et à partir d’un script externe PHP si possible est le suivant:

  1. s'authentifier avec les identifiants admin via PHP
  2. télécharger un plugin spécifique depuis le référentiel
  3. installer le plugin
  4. activer le plugin

Peut-être que je pourrais utiliser le TGM-Plugin-Activation pour installer/activer un autre plugin, mais il faudrait que je puisse installer/activer ce plugin lui-même. Est-ce possible sans clics de l'administrateur et sans utiliser la préinstallation du dossier mu-plugins?

J'ai lu ces posts:

Activer un seul plugin via php

Plugin pour installer un plugin

1
Nick W

WP CLI

Le moyen facile; utilisez la CLIÉ WP (également disponible en tant que wp-cli.phar) pour obtenir une solution solide et maintenable pour cette exigence. Plus pour ce sujet, vous trouverez à la commande


API WP

Si vous avez besoin d'un script personnalisé, il est nécessaire de charger l'API WP, via wp-load.php et de rechercher la fonction activate_plugin($path_to_the_plugin).

Activation

Comme exemple ce dont vous avez besoin pour avoir toutes les conditions pour activer un plugin, voir ci-dessous

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

L'installation d'un plugin est également possible via l'API de WP, le code qui devrait aider à fonctionner dans la bonne direction.

// 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 );

Un exemple qui installe et active vous voit dans cette classe .

3
bueltge