Instalación y activación programática de complementos de WordPress

2 minutos de lectura

avatar de usuario
carloss

¿Es posible, de alguna manera, instalar complementos mediante programación? Entonces, ¿puedo enviarle a mi cliente un archivo que desempaquetan, ir a algún archivo installplugins.php y eso los instala y los activa? La única forma que encontré para hacer eso es realmente rancio de bajo nivel; Espero que alguien aquí conozca mejores métodos.

  • ¿Has leído el código de WordPress? Puede ser muy útil verificar qué está haciendo WordPress cuando hace clic en el botón “instalar”.

    – Tomasz Wysocki

    11 de julio de 2010 a las 5:34

avatar de usuario
yuvilio

Actualizar

Hoy uso un shell loop con wp-cli para instalar y activar los complementos

Respuesta Original

Para activar, uso alguna variante de esto. supongamos que tenía tres complementos que quería activar (“cforms”, “w3-total-cache”, “wordpress-seo”). La convención es que su directorio y el archivo .php del complemento tengan el mismo nombre:

$wordpress_path = "/path/to/my/wordpress/install";    
require_once( $wordpress_path . "/wp-load.php" ); //not sure if this line is needed
//activate_plugin() is here:
require_once(  $wordpress_path . "/wp-admin/includes/plugin.php");
$plugins = array("cforms",  "w3-total-cache",  "wordpress-seo");
foreach ($plugins as $plugin){
$plugin_path = $wordpress_path."wp-content/plugins/{$plugin}.php";
  activate_plugin($plugin_path);
}

  • Perdón por la respuesta tardía, ¡pero respondiste!

    – CarlosS

    21 de agosto de 2011 a las 10:55

  • ‘wp-content/plugins/{$plugin}.php’; debe ser “wp-content/plugins/{$plugin}.php”;

    – hytest

    27/10/2014 a las 14:53


  • Manchado y arreglado. ¡Gracias!

    – yuvilio

    27/10/2014 a las 14:55

  • Algunos complementos usan un nombre diferente para el archivo PHP principal del nombre del complemento. ¿Alguien sabe cómo extraer o detectar el nombre de archivo PHP principal de los complementos?

    -Hans Desjarlais

    22 de septiembre de 2020 a las 1:36

  1. Copiar complemento a /wp-content/plugins/ (directorio raíz si el complemento es solo un archivo, de lo contrario, un subdirectorio).
  2. Llamar activate_plugin('/full/path/to/your/plugin/php');

Aquí hay un guión completo; coloque wp-admin, asígnele un sufijo .php y golpéelo a través de curl.

<?php

define('WP_ADMIN', TRUE);
define('WP_NETWORK_ADMIN', TRUE);
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("/full/path/to/my/plugin.php");
?>

Parece que puede alternar complementos en la base de datos: tabla wp_options -> campo option_name -> active_plugins.

¿Ha sido útil esta solución?