El sistema de plugins de WordPress está muy bien construido. Y puedes usar plugins para WordPress para crear casi cualquier cosa. Por ejemplo, un plugin de reserva y programación de citas; o también contratar servicios de desarrollo para plugins personalizados.
Pero, a veces los plugins pueden causar errores y dañar el sitio. Si utilizas WordPress, sabrás que esto ocurre con bastante frecuencia. Pero, no es un problema de plugins, es un problema de mal código de plugins y/o malos métodos de desarrollo. En este artículo, cubriremos los fundamentos del desarrollo de plugins, así como las mejores prácticas que pueden ser útiles para los principiantes.
¿Debo Utilizar un Plugin o hay Alternativas?
Dada la naturaleza específica de WordPress, el código del programa puede implementarse en un plugin, en una plantilla o en un archivo functions.php
. A continuación se describe brevemente el mejor lugar para el código en diferentes situaciones.
Objetivo del Código
Por regla general, si una nueva característica cambia el diseño del tema activo, debe añadirse en la plantilla. Por otro lado, si la característica prevista añade/cambia la funcionalidad, debe escribirse en un plugin.
Sin embargo, no siempre es posible trazar una línea clara entre funcionalidad y diseño. En situaciones como ésta, busca una respuesta a la pregunta: “¿Utilizarás la nueva función cuando cambie el tema activo?” Esta cuestión nos lleva al siguiente punto.
Los plugins son independientes de los temas
Cualquier código que añadas a la plantilla actual no funcionará cuando cambies a un tema diferente. Y sería un inconveniente volver a escribir trozos de código del viejo tema al nuevo. Aquí es donde entra el beneficio de usar plugins frente a temas hijo (child themes) y/o archivo functions.php. Tu código puede ser fácilmente desplegado en el nuevo tema. A veces es importante mantener la capacidad de cambiar de diseño sin perder funcionalidad. Y cuando estas funciones no sean necesarias, siempre puedes desactivar el plugin.
Puedes escalar fácilmente el plugin
Los plugins son excelentes para dividir el código. Puedes modificar y escalar fácilmente el fragmento de código deseado para adaptarlo a tus necesidades. Esto en sí mismo funciona mucho mejor que pegar trozos de código en un archivo functions.php
y temer que aparezca una “pantalla blanca de la muerte” en tu sitio después de guardar los cambios.
Los plugins pueden ser muy primitivos, como Hello Dolly, o lo suficientemente complejos como para hacer cambios importantes en tu sitio, como Polylang, por lo que la capacidad de escalar es realmente importante.
También existe el beneficio prospectivo de desplegar la funcionalidad a través de plugins: puedes publicar tu plugin en la comunidad de WordPress y quizás incluso ganar dinero con él.
¿Puedo activar demasiados plugins?
Hay un mito bastante popular que dice que los plugins son “malos” para un sitio web en WordPress.
Echemos un breve vistazo a otros mitos populares que se asocian a los plugins:
- El código de los temas funciona mejor que el de los plugins
- Los plugins ralentizan el sitio
- Los plugins se “comen” los recursos del servidor
No hay diferencia entre un trozo de código ejecutado por un tema o un plugin, excepto (en algunos casos) por la sincronización. Los plugins suelen cargar contenidos relacionados con la base de datos, hojas de estilo y scripts. ¡Al final, esto se colocará en la plantilla de todos modos!
Normalmente el problema es que los plugins cargan recursos innecesarios. Esto es un problema de ignorancia del usuario o del desarrollador, pero no un problema de los plug-ins en sí.
En otras palabras, los plugins no utilizan más recursos ni tardan más en ejecutarse que el código de otro lugar; los problemas surgen por el uso de un mal código y de malas prácticas al desarrollar un plugin de WordPress.
Mejores Prácticas en el Desarrollo de Plugins para WordPress
Las mejores prácticas son la piedra angular del buen desarrollo de los plugins. Al igual que escribir un código legible en términos de futuras ediciones, seguir las mejores prácticas afina el plugin y minimiza los dolores de cabeza que un mal plugin puede traer en el futuro.
Lo ideal es que un plugin de WordPress siga las siguientes pautas:
Utilizar prefijos únicos
Utiliza un identificador único cuando implementes tu plugin (como el propio WordPress utiliza el prefijo wp
). Cada archivo, variable y función debe ir acompañado de este identificador único. En la mayoría de los casos pueden ser las iniciales del nombre del plugin, o uno más complejo – lo principal es que este prefijo debe ser relevante y único.
Utilizar la estructura de carpetas limpia del plugin
El nivel raíz de tu directorio de plugins no debe contener más archivos que nombre-plugin.php
y (opcionalmente) el archivo de desinstalación del plugin. Todos los demás contenidos deben colocarse en las carpetas correspondientes. Estilos CSS – en la carpeta css
, imágenes – colocadas en la carpeta images
, etc.
Proporcionar una forma de expansión
Si tienes la intención de ampliar la funcionalidad del complemento en el futuro, diseña la arquitectura del complemento de manera que haya espacio para futuros cambios.
Escribir siempre el código del plugin con el modo de depuración activado
Lo primero que debes hacer cuando planeas escribir un plugin es activar el modo de depuración. WordPress provoca errores cuando algo va mal en el código, pero si el modo de depuración no está activado, sólo tendrás que adivinarlos. Otra ventaja del modo de depuración es la posibilidad de utilizar las últimas funciones de WordPress (si no están actualizadas, el sistema te lo notificará).
Para activar el modo de depuración, abre el archivo wp-config.php
(¡haz una copia de seguridad antes de realizar cambios!) en la raíz de tu sitio de WordPress y encuentra la siguiente línea:
define('WP_DEBUG', false);
Sustituye esta línea por las siguientes:
// Habilitar la depuración.
define('WP_DEBUG', true);
// Especificar que WordPress escriba los errores en el archivo de registro de depuración /wp-content/debug.log
define('WP_DEBUG_LOG', true);
// No mostrar los errores en la pantalla porque se escriben en el archivo de registro (arriba)
define('WP_DEBUG_DISPLAY', false);
// Evita que los errores se muestren en pantalla, es decir, no los muestra
@ini_set('display_errors', 0);
Explicaciones de Actions y Filters en WordPress
Los plugins se ejecutan utilizando los hooks de WordPress para interactuar con el código. Hay dos tipos de ganchos (hooks):
Acciones (Actions)
En pocas palabras, las acciones representan algo que ya ha sucedido. Pueden utilizarse para añadir funcionalidad o cambiar el funcionamiento de WordPress. WordPress llama a las acciones en determinados momentos o cuando se producen ciertos eventos.
Las acciones pueden utilizarse para varios propósitos, como cambiar la Consola de WordPress o, como en el siguiente ejemplo, añadir texto y URLs personalizados a una barra de herramientas:
add_action( 'wp_before_admin_bar_render', 'adictec_modifying_toolbar_example' );
function adictec_modifying_toolbar_example() {
global $wp_admin_bar;
$wp_admin_bar->add_node( array(
'id' => 'site-developer',
'title' => 'Enlace al sitio web del desarrollador',
'href' => 'https://adictec.com/',
'meta' => array( 'target' => '_blank' )
) );
}
Obsérvese el uso de adictec
como prefijo: es un ejemplo de utilización de las mejores prácticas de desarrollo.
WordPress Codex tiene una lista completa de acciones que se pueden utilizar para hacer cambios en WordPress.
Filtros (Filter)
Los filtros son ganchos (hooks) que interactúan con los datos; pueden manipular y modificar los datos a medida que pasan de la base de datos al navegador o viceversa. Por ejemplo, consideremos un escenario en el que el navegador ha solicitado una entrada (publicación). Cuando WordPress transfiere la entrada al navegador, primero aplicará los filtros que se hayan añadido.
Por ejemplo, considera un filtro de gancho que se puede utilizar para añadir un texto arbitrario al final de todas las publicaciones en el sitio.
add_filter('the_content', 'add_text_v_example');
function add_text_v_example($content){
$out = $content . "<p>Cuando uses el contenido de este sitio, recuerda poner un backlink activo a la fuente!</p>";
return $out;
}
Es decir, los filtros se utilizan para cambiar el contenido después de que se haya recuperado de la base de datos, pero antes de que se muestre en el navegador.
WordPress Codex también tiene algo para leer sobre los filtros.
Cómo Crear tu Propio Plugin (Conceptos Básicos)
Ahora que estamos familiarizados con los conceptos de desarrollo de plugins de WordPress, vamos a repasar los fundamentos de la creación de un plugin.
Lo primero que hay que hacer es definir un nombre para el plugin y un prefijo único a utilizar.
Ve al directorio /wp-content/plugins/
y crea una carpeta con el nombre de tu plugin. Para nuestros propósitos actuales, vamos a llamarlo at-wp-plugin
.
Ahora en ese directorio vamos a crear el archivo PHP necesario para que el plugin funcione; llamémoslo adictec_at-wp-plugin.php
. Recuerda que si el plugin tiene muchos archivos, estos deben ser almacenados en carpetas apropiadas.
Después, tenemos que declarar a WordPress` que este nuevo archivo es un plugin. Para ello, vamos a añadir algunos parámetros al archivo:
<?php
/**
* Plugin Name: Plugin de prueba (Nombre del plugin)
* Plugin URI: Aquí está el enlace a tu sitio web
* Description: Aquí puedes encontrar una breve descripción del plugin (qué hace, para qué sirve, etc.)
* Version: 1.0 --- Añade siempre la versión del plugin
* Author: Tu nombre
* Author URI: Si tu sitio web personal es accesible a través de un enlace diferente al del plugin, proporciona un enlace a tu sitio web aquí
* License: Aquí está el nombre de tu licencia
*/
Guarda el archivo y ahora el motor de WordPress sabe que hay un nuevo plugin.
Ahora vamos a probar cómo el plugin hace algo.
add_filter('the_editor_content', 'textf_final_post');
function textf_final_post( $content ){
// añadir un texto en blanco al editor sólo si no hay contenido todavía (entrada vacía
if( empty( $content ) ){
$textf = 'Muy pronto el mundo verá mi próxima obra maestra...' . "\n\n";
$textf .= 'Todo lo que se necesita es:' . "\n\n";
$textf .= '<ul><li>Escribir un post desde el corazón</li><li>Escribir sobre algo útil</li><li>Pensar primero en los lectores</li></ul>' . "\n\n";
return $textf;
} else{
return $content;
}
}
Añade este código al archivo del plugin y prueba a abrir primero una nueva entrada y luego una entrada existente. ¿Notas lo que hace nuestro plugin de prueba?
Ahora que conoces los fundamentos del desarrollo de plugins en WordPress, puedes crear algo más sofisticado y útil. Ahora, esperamos que añadir funcionalidad a WordPress a través de un plugin no te intimide. Y no buscarás plugins de terceros para tareas sencillas, sino que intentarás escribir uno tú mismo.
No te preocupes por el número de plugins, sino por su calidad.