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:
- Crear un duplicado , montar un WordPress base y añadir los plugins que pongo por defecto
- Hacerlo por código un instalador, pero no tiene mucho sentido
- 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.
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.
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.
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