Desarrollo de complementos de WordPress: los conceptos básicos explorados

Uno no puede ser lo suficientemente digno de elogio por la forma en que se ha creado WordPress para extenderse infinitamente a través de su ecosistema de complementos.

Sin embargo, los complementos a veces tienen mala reputación. Cualquiera que haya estado usando WordPress durante más de cinco minutos se habrá encontrado, en un momento u otro, quejándose de un complemento en particular debido a una serie de problemas.

Pero seamos claros: los complementos no son el problema. El problema es el código incorrecto y las malas prácticas de desarrollo, cosas que cualquier desarrollador que se precie debería controlar.

Con lo anterior en mente, en este artículo quiero centrarme en los conceptos básicos del desarrollo de complementos. Este artículo pretende ser una gran introducción para los novatos en el desarrollo de complementos de WordPress, así como un recordatorio de las mejores prácticas para los desarrolladores más experimentados.

¡Empecemos!

¿Debo usar un complemento o una alternativa?

Dado que el código se puede implementar en un complemento o en un tema, es posible que a menudo se pregunte cuál es el curso de acción correcto. ¿Debe su código ir en un complemento, o las alternativas son más apropiadas?

Conozca el propósito de su código

Como regla general, si la nueva función que desea agregar representa un cambio en el diseño de su tema, debe agregarse a un  tema secundario . Por otro lado, si la característica prevista introduce o cambia la funcionalidad, pasa por un complemento.

Dicho esto, no siempre hay una línea clara entre función y diseño. En situaciones como estas, un enfoque más simple sería considerar si desea mantener la nueva función disponible cuando decida cambiar el diseño/tema de su sitio web, lo que nos lleva al siguiente punto.

Los complementos son independientes del tema

Cualquier código que agregue a un tema secundario desaparecerá en el momento en que cambie de tema. Seguro que sería problemático recuperar todos esos pequeños fragmentos de código que agregó. En varios casos, puede ser bastante difícil encontrar solo  esos fragmentos de código.

Ahí es donde los complementos superan los cambios realizados a través de temas secundarios y/o el archivo functions.php . Su código permanece con usted y está disponible para su implementación junto con un nuevo tema. Es esencial que el usuario pueda cambiar de diseño sin temor a perder funcionalidad. ¿No necesita la funcionalidad? Simplemente desactive el complemento .

Puede escalar fácilmente un complemento

Los complementos son excelentes para compartimentar el código. Obtiene un poco de código alineado que se puede modificar y escalar fácilmente para satisfacer sus necesidades. Eso por sí solo funciona mucho mejor que introducir código en el archivo functions.php y vivir con miedo a la » pantalla blanca de la muerte » en el momento en que guarda los cambios.

Los complementos pueden ser súper simples, como Hello Dolly  , o lo suficientemente complejos como para generar cambios radicales en todo su sitio web, como WooCommerce  , por lo que la escalabilidad realmente se vuelve importante.

También hay un beneficio oculto en la implementación de la funcionalidad a través de complementos: puede  lanzar su complemento a la comunidad más grande de WordPress y tal vez incluso comercializarlo en el futuro.

¿Puede tener demasiados complementos?

Los complementos que son «malos» para su sitio web de WordPress es un mito que se extiende no tanto por las deficiencias inherentes de los complementos, sino más bien porque estas creencias parecen haber adquirido las dimensiones de una leyenda urbana.

Echemos un vistazo rápido a algunos mitos asociados con los complementos:

  • El código de los temas funciona mejor que el código de los complementos .
  • Los complementos ralentizan su sitio web.
  • Los complementos son cerdos de recursos.

Puede  haber verdad en estas afirmaciones, eso no debería desanimarte. No hay diferencia entre un fragmento de código ejecutado por un tema o por un complemento, excepto (en algunos casos) por el tiempo. Los complementos generalmente cargarán sus bases de datos, hojas de estilo y scripts asociados. ¡Así se colocará el código en el tema!

El problema generalmente es que los complementos cargan recursos no necesarios o cargan recursos incluso si no son necesarios. Por ejemplo, es posible que haya configurado su complemento para compartir en redes sociales (como Monarch ) para que sea visible solo en enlaces permanentes o páginas de publicación única. Sin embargo, algunos complementos también pueden cargar sus recursos en la página de índice, mientras permanecen invisibles. O algunos usuarios pueden tener varios complementos para compartir, por lo que cargan recursos similares varias veces para una página.

Es un problema en la forma en que los usuarios o desarrolladores manejan los complementos; no es un problema con los complementos per se .

En otras palabras, los complementos no requieren más recursos ni más tiempo que el código en otros lugares; los problemas son el resultado de un código incorrecto y de seguir prácticas deficientes durante el desarrollo del complemento de WordPress.

Mejores prácticas de desarrollo de complementos de WordPress

Las mejores prácticas son la piedra angular para desarrollar un buen complemento. Al igual que hacer que su código sea legible es ventajoso en términos de desarrollo futuro, seguir las mejores prácticas ajusta su complemento y elimina los dolores de cabeza que un mal complemento podría traer más adelante.

Independientemente de las habilidades que utilice para el complemento, son las mejores prácticas las que definirán qué tan bien puede funcionar realmente su complemento. Idealmente, un complemento de WordPress debería funcionar teniendo en cuenta las siguientes prácticas recomendadas:

prefijo todo

Tenga un identificador único para trabajar con su complemento (similar a ‘wp’ usado por WordPress). Cada archivo, variable y función debe tener ese identificador único. En la mayoría de los casos, pueden ser las iniciales del nombre de su complemento, o puede ser un poco creativo, siempre que el prefijo sea relevante y único.

Utilice una estructura de carpetas limpia

El nivel raíz de su directorio de complementos no debe contener archivos que no sean plugin-name.php y (opcionalmente) el archivo de desinstalación. Todo lo demás va a directorios relevantes. Javascript va a un directorio ‘js’, las imágenes van a un directorio ‘images’, y así sucesivamente.

Dar paso a la expansión

Si tiene la intención de expandir la funcionalidad del complemento, desarrolle la arquitectura del complemento de manera que deje espacio para cambios futuros. Es posible que los complementos simples no requieran esto, pero si prevé un alcance para el desarrollo futuro, obtenga la arquitectura de su complemento desde el principio.

Nunca escriba un complemento sin el modo de depuración activado

Lo primero que hace cuando se dispone a escribir un complemento es activar el modo de depuración. WordPress genera errores cuando las cosas van mal para el desarrollo, pero no habría forma de que lo supieras si el modo de depuración no estuviera activo para marcar los errores.

Como otra ventaja, el modo de depuración lo mantiene actualizado con las últimas funciones de WordPress. Con todos los cambios y actualizaciones fluyendo, es posible que no sea posible controlar las nuevas funciones o las funciones obsoletas.

Para habilitar el modo de depuración, diríjase al archivo wp-config.php (¡haga una copia de seguridad antes de realizar cambios!) en el directorio raíz de WordPress y busque la siguiente línea:

01
define('WP_DEBUG', false);

Esa línea necesita ser reemplazada con:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
// Switch on debugging
 
define('WP_DEBUG', true);
 
// Direct WordPress to the <a class="wpil_keyword_link" href="https://www.elegantthemes.com/blog/tips-tricks/using-the-wordpress-debug-log"   title="debug log" data-wpil-keyword-link="linked">debug log</a> file /wp-content/debug.log file
 
define('WP_DEBUG_LOG', true);
 
// PHP 'display_errors' variable is not forced
 
define('WP_DEBUG_DISPLAY', false);
 
// Stops errors from being displayed onscreen
 
@ini_set('display_errors', 0);

¡Es tan simple como eso!

Acciones y filtros explicados

Los complementos se ejecutan haciendo uso de enlaces de WordPress para modificar e interactuar con el código. Hay dos tipos de anzuelos:

1. Acciones

En pocas palabras (y literalmente), las acciones representan algo que ha sucedido. Se pueden usar para agregar funcionalidad o cambiar la forma en que funciona WordPress. WordPress invoca Acciones en ciertos puntos o con la ocurrencia de ciertos eventos.

Las acciones se pueden usar para una variedad de propósitos, como  modificar su tablero de WordPress o, como en el siguiente ejemplo, agregar texto personalizado y URL a la barra de herramientas:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
add_action( 'wp_before_admin_bar_render', 'wwtp_modifying_toolbar_example' );
 
function wwtp_modifying_toolbar_example() {
 
    global $wp_admin_bar;
 
    $wp_admin_bar->add_node( array(
 
        'id'    => 'site-developer',
 
        'title' => 'Reach out to the Website Developer',
 
        'href'  => 'https://www.elegantthemes.com/,
 
        'meta'  => array( 'target' => '_blank' )
 
    ) );
 
}

Observe el uso de wwtp como prefijo, simplemente como un prefijo único para configurar el código hacia las buenas prácticas.

El Codex de WordPress tiene una lista de acciones que se pueden usar para realizar cambios en su WordPress.

2. Filtros

Los filtros son ganchos que interactúan con los datos; pueden administrar y cambiar los datos a medida que fluyen desde la base de datos al navegador, o al revés. Por ejemplo, considere un escenario en el que el navegador ha solicitado una publicación. A medida que WordPress transfiere la publicación al navegador, aplicará los filtros que se hayan agregado.

Puede usar filtros para limpiar el enlace permanente de una página web. En el ejemplo aquí, eliminaré del enlace permanente, una buena manera de deshacerme de la palabra vacía.

01
02
03
04
05
06
07
08
09
10
11
add_filter( 'sanitize_title', 'wwtp_remove_of_stopword' );
 
function wwtp_remove_of_stopword( $title ) {
 
    $title = str_replace( '-of-', '-', $title );
 
    $title = preg_replace( '/^of-/', '', $title );
 
    return $title;
 
}

Nuevamente, el Codex de WordPress es un gran recurso para mantenerse informado sobre los filtros .

Cómo crear su propio complemento (conceptos básicos)

Ahora que tenemos una idea de los conceptos que intervienen en el desarrollo de complementos de WordPress, podemos seguir los pasos necesarios para crear un complemento.

Lo primero que debe hacer es decidir el nombre del complemento y el prefijo único que va a utilizar.

Navegue hasta el directorio wp-content/plugins y cree una carpeta con el nombre de su complemento. Para nuestros propósitos actuales, llamémoslo simplemente mytestplugin .

El directorio del complemento ahora puede alojar el archivo PHP requerido para el complemento; llamémoslo  wwtp_mytestplugin.php . Recuerde, siguiendo las mejores prácticas, si hay más archivos, deben ir a directorios específicos. Idealmente, solo un archivo debe permanecer en el nivel raíz.

Ahora debemos decirle a WordPress que nuestro pequeño archivo representa un complemento. Agregaremos algunos parámetros al archivo para que WordPress sepa que se trata de un complemento:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
<?php
 
/**
 
* Plugin Name: My Test Plugin
 
* Plugin URI: http://add_your_uri_here.com/
 
* Description: Tell the world what your plugin wants to achieve.
 
* Version: 1.0 adding a version is always handy.
 
* Author: Your name
 
* Author URI: If your personal website is different than the plugin website, it goes here.
 
* License: A license name
 
*/

¡Voila! WordPress sabe que tienes un plugin.

Ahora que WordPress sabe acerca de nuestro complemento, ¿qué tal si hace que haga algo? Dejemos un mensaje en el editor de publicaciones. Simplemente agregue este código para seguir el conjunto anterior, y el complemento puede entrar en acción:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
add_filter( 'the_editor_content', 'wwtp_adding_text_notes' );
 
function wwtp_adding_text_notes( $content ) {
 
    // Only add this text if the box is empty. We don't want to mess up drafts!
 
    if ( empty( $content ) ) {
 
        $template  = 'Hey let us start writing...' . "nn";
 
        $template .= '<ul><li>Add useful text</li><li>Make good use of images</li><li>And don't forget the alt text!</li></ul>' . "nn";
 
        return $template;
 
    } else
 
        return $content;
 
}

Así es como se ve nuestro complemento en acción:

Ahora que tiene claros los conceptos básicos del desarrollo de complementos de WordPress, es posible que desee probar algo más avanzado. El artículo de Andy sobre el desarrollo de un complemento de WordPress  es un excelente lugar para comenzar su viaje hacia la creación de complementos más complejos.

Conclusión

Conocer los conceptos básicos del desarrollo de complementos de WordPress puede ser beneficioso para todos los usuarios de este CMS. Agregar funcionalidad puede ser mucho más fácil una vez que acepta el poder de los complementos y deja de tener dudas sobre estos fragmentos de código tan útiles.

Simplemente siga las mejores prácticas para mantener su complemento en buenas condiciones y en buen estado, y podrá disfrutar de la escalabilidad y flexibilidad resultantes. No siempre necesita encontrar un complemento para sus necesidades; puede manejar las tareas simples usted mismo.

Ahora conoce los conceptos básicos para agregar funciones personalizadas a su sitio y mantenerlo independiente del tema. No se preocupe por la cantidad de complementos que puede agregar: use tantos como desee, pero concéntrese en los complementos de calidad.

¡Háganos saber sus historias de complementos y experiencias con el desarrollo de sus propios complementos en los comentarios a continuación!

Haber de imagen: retrocohete / ShutterStock