Home » Php » php – Programmatically installing & activating WordPress plugins

php – Programmatically installing & activating WordPress plugins

Posted by: admin July 12, 2020 Leave a comment

Questions:

Is it possible, somehow to programmatically install plugins? So I can send my client one file they unpack, go to some installplugins.php file and that installs + activates them? Only way I found for doing that is really rancid lowlevel; I’m hoping someone here knows better methods.

How to&Answers:

Update

Today I use a shell loop with wp-cli to install and activate the plugins

Original Answer

For activating, I use some variant of this. suppose I had three plugins i wanted to activate (“cforms”, “w3-total-cache”, “wordpress-seo”). The convention is that their directory and plugin .php file are the same name:

$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);
}

Answer:

  1. Copy plugin to /wp-content/plugins/ (root dir if the plugin is just one file, otherwise a subdir).
  2. Call activate_plugin('/full/path/to/your/plugin/php');

Answer:

Here’s a complete script; put in wp-admin, give it a .php suffix, and hit it via 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");
?>

Answer:

Looks like you can toggle plugins in the database: table wp_options -> field option_name -> active_plugins.