alvaro.gonzalezsotillo@educa.madrid.org

Plugins para Wordpress

Álvaro González Sotillo

Created: 2025-01-30 jue 19:06

1. ¿Qué es un plugin

  • Un plugin permite añadir funcionalidad a un software
  • El software debe tener soporte para ello
  • En el caso de Wordpress
    • Se utiliza PHP
    • Se extiende con hooks de acción y de filtro
    • Expone un conjunto de funciones (API)

2. Hooks

  • Similares a listeners de Javascript, o triggers de Oracle
  • Registran funciones que se llamarán en momentos adecuados

Saber más…

2.1. Hooks de acción

  • Llamados antes de realizar una acción:
  • Una acción
    • Recibe información sobre el objeto que actua
    • Modifica ese objeto, u otra parte de Wordpress, y no devuelve nada
    • Es como un procedure de Oracle

2.2. Uso de hooks de acción

function envia_cabecera_http_personalizada() {
    header('X-Custom-Header: El_Valor_Personalizado');
}

add_action('send_headers', 'envia_cabecera_http_personalizada');

2.3. Hooks de filtro

  • Sirven para modificar datos devueltos por algunas funciones.

2.4. Uso de hooks de filtro

function pon_prefijo_a_titulo($title) {
    if (is_single() ) {
        $title = 'Este es mi blog: ' . $title;
    }
    return $title;
}

add_filter('the_title', 'pon_prefijo_a_titulo');

3. Plugins

  • Hay varias formas de hacerlos
  • Usaremos
    • Un directorio en /wp-contents/plugins
    • Dentro de ese directorio, un fichero .php con el nombre del directorio

3.1. Cabecera del plugin

  • En un comentario de bloque /* .. */, se incluyen datos del plugin
  • Nombre del plugin, sitio de actualización, página web, autor, dependencias…
/**
 * Plugin Name:       Plugin Name
 * Plugin URI:        https://example.com/plugin-name
 * Description:       Description of the plugin.
 * Version:           1.0.0
 * Requires at least: 5.2
 * Requires PHP:      7.2
 * Author:            Your Name
 * Author URI:        https://example.com
 * Text Domain:       plugin-slug
 * License:           GPL v2 or later
 * License URI:       http://www.gnu.org/licenses/gpl-2.0.txt
 * Update URI:        https://example.com/my-plugin/
 * Requires Plugins:  my-plugin, yet-another-plugin
 */

3.2. Fichero principal del plugin

  • Fichero .php dentro del directorio del plugin, del mismo nombre
  • Registra las acciones y filtros necesarios
  • Opcionalmente
function miplugin_agrega_una_pagina_al_menu_admin(){

    add_menu_page(
         'Página del plugin', // Title of the page
         'Página informativa del plugin de disclaimer', // Text to show on the menu link
         'manage_options', // Capability requirement to see the link
         plugin_dir_path(__FILE__) . 'pagina-admin.php' // se añade a /wp-admin
    );


add_action( 'admin_menu', 'miplugin_agrega_una_pagina_al_menu_admin' );

3.3. Normas básicas a seguir

  • Las funciones y constantes son globales: hay que ponerles un prefijo para que no colisionen
  • Sin efectos laterales en los filtros: son funciones

Saber más…

4. Ejercicios

4.1. Crea un plugin vacío

  • Crea un plugin vacío
    • Elije un nombre (ejemplo: iaw_test_plugin)
    • Elije un prefijo para tus funciones y opciones (ejemplo: iaw_test_plugin)
    • Incluye comentario con los datos del plugin
  • El plugin debe aparecer al visitar http://servidor/wordpress/wp-admin/plugins.php

4.2. widget en el dashboard

  • Añade un widget que simplemente diga "¡Hola, mundo!"
    • Acción wp_dashboard_setup
    • Función wp_add_dashboard_widget

4.3. Página nueva en el menú de administración

  • Acción admin_menu
  • Función add_menu_page
  • La página no tendrá funcionalidad: solo mostrará un texto lorem ipsum

4.4. Filtro de contenido

  • Filtro the_content
  • Quita todas las ocurrencias de la pseudopalabra WTF, las cambia por ###

4.5. Página de settings

  • En vez de ###, se podrá censurar la palabra prohibida con una cadena configurable
  • Acción admin_init
    • Registrar una opción con la función register_setting
    • El nombre de la opción:
  • Acción admin_menu
  • En la función de opciones de página
    • Usar settings_fields dentro del formulario
    • Los campos input tendrán los nombres definidos en register_settings
    • El valor actual se puede conseguir con get_option
echo '<form method="post" action="options.php">';
settings_fields( 'wpdocs-plugin-settings-group' );
$value = get_option("...");
echo '<input type="..." name="..." value="$value">'
...    

4.6. Más posibilidades

  • Haz que el filtro solo se active en chrome, pero no en firefox
  • Haz que el filtro se pueda activar o desactivar
    • Con otro setting
    • En el dashboard se verá si está activado, y qué palabra se utiliza para censurar.
  • Empaqueta el plugin y publícalo

5. Referencias

https://www.wpbeginner.com/wp-tutorials/how-to-create-a-wordpress-plugin/ https://www.hostinger.es/tutoriales/tutorial-wordpress-plugins-crear-plugin-wordpress https://developer.wordpress.org/apis/