Cómo crear un complemento de WordPress

Los complementos de WordPress permiten a los usuarios modificar, personalizar y mejorar fácilmente cualquier sitio web de WordPress. En lugar de cambiar el software principal en el que se basa WordPress, puede crear un complemento para ampliarlo. El uso de complementos le permite tener la instalación de WordPress más optimizada mientras maximiza la forma en que usa el software para empezar.

Este artículo lo guiará a través de los pasos para crear un complemento de WordPress.

¿Qué es un complemento de WordPress?

Aquí está la definición básica que se encuentra en el Codex de WordPress .

Complemento de WordPress: un complemento de WordPress es un programa, o un conjunto de una o más funciones, escrito en el lenguaje de secuencias de comandos PHP, que agrega un conjunto específico de funciones o servicios al weblog de WordPress, que se puede integrar perfectamente con el weblog mediante acceso puntos y métodos proporcionados por la interfaz de programa de aplicación (API) del complemento de WordPress .

Crear un complemento

Al crear un complemento de WordPress, hay algunos estándares que se deben cumplir al hacerlo. A continuación, describiré algunos puntos clave para recordar al crear el suyo propio.

Nombre del complemento

Si planea crear un complemento que aún no existe, primero deberá determinar su nombre. Para estar más seguro, querrá hacer una búsqueda en el repositorio de complementos de WordPress. Algunos desarrolladores eligen un nombre que describe más de lo que hace el complemento para que el usuario final pueda establecer una conexión rápida con el nombre. El nombre en sí puede ser varias palabras.

Archivos de complemento

Por lo general, un complemento vive dentro de su propia carpeta dentro de wp-content/plugins/su instalación de WordPress. Por lo general, hay al menos un archivo PHP que normalmente lleva el nombre del complemento. Entonces, si su complemento se llamó asombroso-enchufe , lo más probable es que el nombre de su archivo PHP sea amazing-plug.php. Usar un nombre único es crucial para que no haya dos complementos que usen el mismo nombre.

También puede optar por dividir su complemento en varios archivos; similar a la forma en que se construye WordPress. Los activos como imágenes, CSS y JavaScript son comunes para ver dentro de los complementos instalados.

Archivo Léame

Los archivos Léame son útiles para otros desarrolladores y usuarios. Por lo general, estos archivos brindan una descripción rápida del complemento y, a veces, ofrecen registros de cambios que indican actualizaciones anteriores y anuncios de mantenimiento para los usuarios.

Página de inicio

Si planea compartir su complemento con la comunidad de WordPress, sería prudente tener una página de inicio dedicada. Esta página se puede usar como un lugar para descargar el complemento, informar errores y anunciar actualizaciones a su comunidad de usuarios.

Archivo de complemento estándar

Un complemento debe contener un poco de metainformación que le dice a WordPress qué es y cómo manejarlo dentro de su sitio web. Los complementos se pueden instalar, eliminar, activar y desactivar. A continuación se presenta un encabezado estándar para establecer la presencia de su complemento. Los parámetros que se muestran le dirán a WordPress cómo optimizarlo dentro de su sitio web y el área de administración de WordPress.

01
02
03
04
05
06
07
08
09
10
<?php
/**
* Plugin Name: My Plugin Name
* Plugin URI: http://mypluginuri.com/
* Description: A brief description about your plugin.
* Version: 1.0 or whatever version of the plugin (pretty self explanatory)
* Author: Plugin Author's Name
* Author URI: Author's website
* License: A "Slug" license name e.g. GPL12
*/

Lo mínimo que necesita WordPress para establecer su archivo como complemento es la línea

01
Plugin Name: My Plugin Name

El resto de la información se mostrará dentro del área de administración en la sección Complementos .

Programando el complemento

Ahora llega el momento de crear nuestro propio complemento de demostración. Estaré trabajando en una copia local de WordPress usando nuestro tema Divi 2.0. Puede seguir el método que prefiera, pero para limitar cualquier tiempo de inactividad en su sitio web, le sugiero que trabaje localmente o en un servidor de prueba. Nuestro blog presenta otras publicaciones sobre la instalación local de WordPress si es nuevo en el concepto. Encuentre los enlaces a continuación dependiendo de su plataforma.

Enlaces:

  • Cómo instalar WordPress localmente en una computadora con Windows
  • Cómo crear una instalación local de WordPress en una Mac

Para este tutorial, crearé un complemento que crea un tipo de publicación personalizada para nuestro blog y establece algunos otros parámetros personalizados. Este complemento será útil porque podremos usarlo entre cualquier tema en lugar de solo modificar uno.

Alcance del complemento

Nuestro complemento comenzará con un archivo PHP simple. Llamaremos a este archivo custom-music-reviews.php. Dentro de nuestro archivo, crearemos un tipo de publicación personalizado y definiremos algunas categorías nuevas dentro de ese tipo de publicación. El propósito de este complemento será escribir reseñas de música dentro de géneros específicos sin necesidad de tocar el código en el futuro. Cada reseña tendrá una imagen destacada, un extracto, una calificación y un tipo de género.

Comenzando

Suponiendo que tiene una copia local de WordPress lista para usar, navegue a su wp-contentcarpeta dentro del editor de código de su elección. Dentro de esa carpeta deberías ver una carpeta llamada plugins. Dentro de esa carpeta crea una nueva carpeta llamada custom-music-reviews.

Con la carpeta creada crea un nuevo archivo dentro llamado custom-music-reviews.php.

La ruta al archivo ahora debería ser wp-content/plugins/custom-music-reviews/custom-music-reviews.php.

Con su nuevo archivo creado, necesitamos agregar algunos parámetros en forma de comentario como expliqué anteriormente. Para nuestro complemento, nuestros parámetros se verán así:

01
02
03
04
05
06
07
08
09
<?php
/**
* Plugin Name: Custom Music Reviews
* Plugin URI: https://www.elegantthemes.com/
* Description: A custom music review plugin built for example.
* Version: 1.0
* Author: Andy Leverenz
* Author URI: http://justalever.com/
**/

Con esta información agregada, guarde su archivo y navegue a su área de administración de WordPress. Haga clic en Complementos en la navegación del lado izquierdo y ahora debería ver nuestro complemento disponible. ¿No fue fácil?

Con nuestros parámetros establecidos, nuestro complemento estará disponible para activarse en «Complementos instalados».

Aunque nuestro archivo está vacío, podemos continuar y activar el complemento. Adelante, hazlo ahora. Con suerte, no notará nada diferente en su sitio con el complemento activado. Si lo hace, probablemente escribió mal el contenido anterior o no pudo cerrar el comentario.

Agregar nuestro código de complemento

Con nuestro archivo configurado y el complemento activo, ahora podemos agregar el funcionamiento interno del complemento que usaremos para este tutorial.

Agregue el código a continuación:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Register the Custom Music Review Post Type
 
function register_cpt_music_review() {
 
    $labels = array(
        'name' => _x( 'Music Reviews', 'music_review' ),
        'singular_name' => _x( 'Music Review', 'music_review' ),
        'add_new' => _x( 'Add New', 'music_review' ),
        'add_new_item' => _x( 'Add New Music Review', 'music_review' ),
        'edit_item' => _x( 'Edit Music Review', 'music_review' ),
        'new_item' => _x( 'New Music Review', 'music_review' ),
        'view_item' => _x( 'View Music Review', 'music_review' ),
        'search_items' => _x( 'Search Music Reviews', 'music_review' ),
        'not_found' => _x( 'No music reviews found', 'music_review' ),
        'not_found_in_trash' => _x( 'No music reviews found in Trash', 'music_review' ),
        'parent_item_colon' => _x( 'Parent Music Review:', 'music_review' ),
        'menu_name' => _x( 'Music Reviews', 'music_review' ),
    );
 
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'description' => 'Music reviews filterable by genre',
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes' ),
        'taxonomies' => array( 'genres' ),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'menu_position' => 5,
        'menu_icon' => 'dashicons-format-audio',
        'show_in_nav_menus' => true,
        'publicly_queryable' => true,
        'exclude_from_search' => false,
        'has_archive' => true,
        'query_var' => true,
        'can_export' => true,
        'rewrite' => true,
        'capability_type' => 'post'
    );
 
    register_post_type( 'music_review', $args );
}
 
add_action( 'init', 'register_cpt_music_review' );

Este código anterior puede parecer mucho y casi parecer un idioma desconocido para usted si es nuevo en WordPress, pero si no, reconocerá este código como un tipo de publicación personalizada . En este caso, nuestro tipo de publicación personalizada se llama music_review . El código esencialmente le dice a WordPress que establezca un nuevo tipo de publicación dentro de su tema. El tipo de publicación tiene parámetros que lo acompañan, como etiquetas, argumentos y más. No entraré en muchos detalles sobre cómo funcionan los tipos de publicaciones personalizadas porque ya lo cubrí en otro artículo sobre Elegant Themes . Asegúrese de leerlo para obtener una comprensión completa.

Con nuestro tipo de publicación configurado, ya puede verlo activo en el área de administración de WordPress.

Nuestro tipo de publicación personalizada se implementó con éxito.

Llevemos las cosas un poco más allá e incluyamos una taxonomía personalizada llamada Género dentro de nuestro complemento. Piense en una taxonomía como un tipo de característica de categorización completamente personalizada. WordPress ya incluye compatibilidad con categorías y etiquetas de forma predeterminada, pero los desarrolladores pueden crear taxonomías personalizadas para ampliar aún más sus temas o complementos.

Lea más sobre las taxonomías de WordPress
aquí .

Agregue el código a continuación en la función de tipo de publicación personalizada que acabamos de agregar.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
function genres_taxonomy() {
    register_taxonomy(
        'genres',
        'music_review',
        array(
            'hierarchical' => true,
            'label' => 'Genres',
            'query_var' => true,
            'rewrite' => array(
                'slug' => 'genre',
                'with_front' => false
            )
        )
    );
}
add_action( 'init', 'genres_taxonomy');

Registrar una nueva Taxonomía es relativamente fácil. Hicimos la conexión con nuestro tipo de publicación personalizada usando la
register_taxonomy()función que crea una nueva taxonomía llamada géneros y la asigna a nuestro tipo de publicación music_review .

Necesitamos agregar una línea más a nuestro tipo de publicación personalizada para que todo se sincronice. Agregue este código justo debajo del argumento de soporte dentro del tipo de publicación personalizada.

Aquí está todo nuestro código de complemento hasta este punto. Para una mejor legibilidad, eliminé nuestro código de cualquier comentario que tuviéramos antes de esto.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
function register_cpt_music_review() {
 
    $labels = array(
        'name' => _x( 'Music Reviews', 'music_review' ),
        'singular_name' => _x( 'Music Review', 'music_review' ),
        'add_new' => _x( 'Add New', 'music_review' ),
        'add_new_item' => _x( 'Add New Music Review', 'music_review' ),
        'edit_item' => _x( 'Edit Music Review', 'music_review' ),
        'new_item' => _x( 'New Music Review', 'music_review' ),
        'view_item' => _x( 'View Music Review', 'music_review' ),
        'search_items' => _x( 'Search Music Reviews', 'music_review' ),
        'not_found' => _x( 'No music reviews found', 'music_review' ),
        'not_found_in_trash' => _x( 'No music reviews found in Trash', 'music_review' ),
        'parent_item_colon' => _x( 'Parent Music Review:', 'music_review' ),
        'menu_name' => _x( 'Music Reviews', 'music_review' ),
    );
 
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'description' => 'Music reviews filterable by genre',
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes' ),
        'taxonomies' => array( 'genres' ),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'menu_position' => 5,
        'menu_icon' => 'dashicons-format-audio',
        'show_in_nav_menus' => true,
        'publicly_queryable' => true,
        'exclude_from_search' => false,
        'has_archive' => true,
        'query_var' => true,
        'can_export' => true,
        'rewrite' => true,
        'capability_type' => 'post'
    );
 
    register_post_type( 'music_review', $args );
}
 
add_action( 'init', 'register_cpt_music_review' );
 
function genres_taxonomy() {
    register_taxonomy(
        'genres',
        'music_review',
        array(
            'hierarchical' => true,
            'label' => 'Genres',
            'query_var' => true,
            'rewrite' => array(
                'slug' => 'genre',
                'with_front' => false
            )
        )
    );
}
add_action( 'init', 'genres_taxonomy');

La única línea que cambió fue la 'taxonomies' => array('genre')línea dentro de nuestro tipo de publicación personalizada. Agregué esta línea para decirle a nuestro tipo de publicación personalizada que se conecte a nuestra nueva taxonomía y la use en lugar de la categoría predeterminada o la estructura de etiquetas con la que viene instalado WordPress.

Si ha llegado hasta aquí, ahora puede visitar su área de administración de WordPress y ver su nuevo tipo de publicación personalizada y taxonomía (géneros) presentes. ¡Felicitaciones!

Nuestro tipo de publicación personalizada y taxonomía se implementan con éxito. Aquí podemos agregar una nueva Reseña Musical que contiene varios tipos de géneros decididos por el usuario.

Conseguir que nuestro código salga

A continuación intentaré añadir una nueva reseña musical. Debería ver la nueva sección Géneros que configuramos con nuestra taxonomía personalizada. Con algunos datos ingresados ​​publicaré el post.

Crea una nueva reseña musical como ejemplo.

En este punto, tenemos nuestra funcionalidad configurada dentro de nuestro complemento.

Para hacer las cosas sin esfuerzo, confiaremos en el complemento para crear una nueva página llamada Music Reviews. Nuestro complemento hará referencia a la página y generará cualquier revisión de música nueva que publique el usuario. Estamos haciendo esto para que el usuario no tenga que editar una sola línea de código.

Atarlo todo junto

Nuestro código ahora funciona, pero debemos crear una página que use

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
// Function used to automatically create Music Reviews page.
function create_music_review_pages()
  {
   //post status and options
    $post = array(
          'comment_status' => 'open',
          'ping_status' =>  'closed' ,
          'post_date' => date('Y-m-d H:i:s'),
          'post_name' => 'music_review',
          'post_status' => 'publish' ,
          'post_title' => 'Music Reviews',
          'post_type' => 'page',
    );
    //insert page and save the id
    $newvalue = wp_insert_post( $post, false );
    //save the id in the database
    update_option( 'mrpage', $newvalue );
  }

Y finalmente, necesitamos crear nuestra página de Reseñas de música una vez que se activa el complemento. Agregar el código a continuación inicia la función que acabamos de escribir arriba ( función create_music_review_pages(){…} ).

01
02
// // Activates function if plugin is activated
register_activation_hook( __FILE__, 'create_music_review_pages');

Pruebas

Nuestro complemento debería estar listo para probar en este punto. Vamos a crear una reseña musical de ejemplo y ver qué resultados.

Cree otra revisión de música para verificar que nuestro complemento funcione correctamente.

Si hace clic en Ver reseña de música una vez que se publica la publicación, debería acceder a una pantalla similar a la imagen a continuación. Su tema y estilos pueden variar…

La plantilla de reseña musical de una sola página

Puede notar que modifiqué el menú para incluir nuestra nueva página de reseñas musicales . Hacer esto nos da fácil acceso.

Ajuste de la navegación principal para incluir la página «Reseñas musicales»

Con su menú en su lugar y guardado, haga clic en Music Reviews para ver todas las publicaciones que hemos hecho hasta ahora.

En función de la plantilla de página suministrada por su tema, la Reseña de música debe generarse en conjunto y se puede hacer clic en ella hasta la plantilla de reseña individual. Probablemente notará que la reseña musical que publiqué anteriormente tiene una salida tan buena como la que acabamos de crear.

Nuestras reseñas musicales en la página “Reseña musical”

Nuestra imagen destacada, título, género y reseña se han publicado con éxito. ¡Nuestro complemento funciona!

Para verificar, puede desactivar el complemento y reinstalarlo o activarlo. Al hacerlo, se debe crear una nueva página llamada Reseñas musicales . Puede eliminar o reutilizar el anterior si hay duplicados, pero solo debe haber una página de «Reseñas de música». Podríamos haber agregado una función para eliminar y restaurar esta página dentro de nuestro complemento, pero quería mantener las cosas lo más simples posible.

Finalizar

Nuestro complemento es relativamente simple. Puede extenderlo mucho más al incluir sus propias plantillas predefinidas, widgets personalizados, más taxonomías y mucho más. Crear un complemento no es tarea fácil. Deberá planificar su complemento incluso antes de pasar al desarrollo. Saber lo que puede y no puede hacer con WordPress antes de codificar su propio complemento es un paso crucial para desarrollar uno de calidad. El complemento creado en este tutorial está destinado a enseñar con el ejemplo. Hay mejores normas que seguir y prácticas más útiles que soportar. Asegúrese de leer el Codex de WordPress y familiarícese con la API del complemento de WordPress . Si no hay un complemento disponible y necesita una funcionalidad personalizada para su sitio web, le recomiendo que intente crear el suyo propio.

Todas las portadas y derechos de los álbumes pertenecen a sus creadores. Elegant Themes no posee ni tiene ninguna relación con los artistas que se reseñan en este tutorial. Las imágenes y los títulos se usaron solo como ejemplo.

Imagen en miniatura del artículo «plug» ilustración por RAStudio / Shutterstock.com