TGM automatizar la instalacion de varios plugins en WordPress


En otro articulo hablamos de la  clase TGM Plugin Activación una librería php , una pequeña joya que nos va a permitir  recomendar plugins.   Hace tiempo que quería automatizar una nueva instalación y tenia varias formas de hacerlo:

  1.  Crear un duplicado , montar un WordPress base y añadir los plugins que pongo por defecto
  2.  Hacerlo por código un instalador, pero no tiene mucho sentido
  3.  Crear un plugin que me de una lista de plugins a instalar y de los cuales pueda elegir.

 

Este es un plugin que usare en mis proyectos al comienzo para instalar otros plugins pero luego no tiene ninguna utilidad mas asi que una vez que haga lo que se quiere es bueno desactivarlo y desinstalarlo.

 

Vamos a ver como funciona

Podeis ver una captura de un mensaje que nos lanza donde he puesto algunos para esta prueba.
aviso_instalacion

Os dejo una lista de mis preferidos

  • Seguridad – IThemes Security o Sucurri
  • Seo y Analytics – Yoast y Google Analytics by MonsterInsights
  • Copias de Seguridad – UpdraftPlus Backup o  BackUp WordPress
  • Formularios – Contact Form 7
  • Smtp (envio emails) – Easy WP SMTP
  • Optimizar site – Autoptimize
  • Cache – WP Fastest Cache / WP Super Cache
  • ……….

 

 

Y si pulsamos la  opción de Begin installing plugins nos vamos a una pantalla donde podríamos descargar todos los plugins de un solo golpe.

instalar-plugins-desde-un-solo-click

Ahora podríamos seleccionarlos todos y en acciones en lote darle a install para que se nos carguen en el WordPress, luego tendriamos que activarlos. Para este paso de activar lo podeis hacer de golpe o de uno en uno.

 

ejemplo-tgm-libreria-wordpress

 

Ahora vamos a por el codigo:

Para hacer un plugin no es necesario siempre crear una clase definir constantes,… dependerá mucho del plugin. En este caso practico vamos a ir al grano.

Al descargarte la librería viene un php donde tenemos un ejemplo en example.php

 

Esta librería permite añadir plugins de urls, plugins tuyos en un zip, plugins de github y lo mas importante plugins del repositorio de WordPress.

En este caso quiero unos plugins que estén en el repositorio  y lo que hay que hacer es un array de plugins donde definiremos cada plugin con tres parámetros: name, slug y required

array(
	'name'        => 'WordPress SEO by Yoast',  // nombre del plugin
	'slug'        => 'wordpress-seo', // suele ser el nombre del directorio
	'required'  => true, // si es true sera obligatorio , si es false entonces sera recomendado
),

array(
	'name'        => 'iThemes Security',
	'slug'        => 'better-wp-security',
	'required'  => true,
),

Código del Plugin

Aquí definiremos nuestro array de plugins

<?php
 
/*
Plugin Name: Plugins basicos
Plugin URI: https://www.danielcastanera.com/tgm-automatizar-instalacion-plugins-wordpress/
Description: Plugin que recomienda a otros plugins 
Author: Daniel Castanera
Version: 1.0
Author URI: https://www.danielcastanera.com/
*/

require_once dirname( __FILE__ ) . '/tgm/class-tgm-plugin-activation.php';

add_action( 'tgmpa_register', 'pluginsbasicos_register_required_plugins' );

/**
 * Register the required plugins 
 *
 */
function pluginsbasicos_register_required_plugins() {

	$plugins = array( 
	
		array(
			'name'        => 'WordPress SEO by Yoast',
			'slug'        => 'wordpress-seo',
			'required'  => true,
		),
		array(
			'name'        => 'iThemes Security',
			'slug'        => 'better-wp-security',
			'required'  => true,
		),
		array(
			'name'        => 'Autoptimize',
			'slug'        => 'autoptimize',
			'required'  => true,
		),
		array(
			'name'        => 'Easy WP SMTP',
			'slug'        => 'easy-wp-smtp',
			'required'  => true,
		),		
		array(
			'name'        => 'Contact Form 7',
			'slug'        => 'contact-form-7',
			'required'  => true,
		),
		
		
		);

	
	// esta informacion la dejare por defecto. 
	$config = array(
		'id'           => 'pluginsbasicos',        // Unique ID for hashing notices for multiple instances of TGMPA.
		'default_path' => '',                      // Default absolute path to bundled plugins.
		'menu'         => 'tgmpa-install-plugins', // Menu slug.
		'parent_slug'  => 'plugins.php',            // Parent menu slug.
		'capability'   => 'manage_options',    // Capability needed to view plugin install page, should be a capability associated with the parent menu used.
		'has_notices'  => true,                    // Show admin notices or not.
		'dismissable'  => true,                    // If false, a user cannot dismiss the nag message.
		'dismiss_msg'  => '',                      // If 'dismissable' is false, this message will be output at top of nag.
		'is_automatic' => false,                   // Automatically activate plugins after installation or not.
		'message'      => '',                      // Message to output right before the plugins table.
	);

	tgmpa( $plugins, $config );
}

 

Si quisiéramos tener varias listas no podríamos utilizar esta opción, lo mejor seria separar en varios php cada lista de plugins y luego hacer un require de los ficheros.  Esto podemos verlo en una version 2 de este plugin.

 

[button text=”Descargar el plugin” url=”https://www.danielcastanera.com/wp-content/uploads/2016/08/plugins-basicos.zip” background_color=”#000″ text_color=”#ffffff” style=”lt_flat” size=”default” icon=”” open_new_window=”true” rounded=”true”]

 

 

 

Icon made by Madebyoliver from www.flaticon.com