Crear un Plugin para wordpress paso a paso

Hoy vamos a tener un artículo algo más largo de lo normal, y es que hoy vamos a ver como crear un Plugin para WordPress paso a paso y con nuestro propio código, con el Plugin que vamos a crear hoy conseguiremos un formulario de suscripción para nuevos autores, lo hemos querido hacer así por que ahora estamos buscando dos nuevos autores para este mismo blog y hemos pensado que crear un Plugin con un formulario estaría bien para poder ponerlo en cualquier artículo del blog, y así de paso poder explicaros a vosotros como lo hemos hecho.

Bien, empecemos por el principio, lo primero que tenemos que definir es el nombre de la carpeta que contendrá nuestro Plugin, en nuestro caso la hemos llamada “FS_autor”, ya así definimos bien el nombre del Plugin y así no entraremos en conflicto con ningún otro Plugin al utilizar FS como nuestras siglas iniciales, dentro de dicha carpeta crearemos un archivo llamado “FS_autor.php”, es este único archivo el que contendrá toda la magia de nuestro Plugin.

Lo primero que haremos será abrir el archivo con nuestro ID de programación favorito, y para empezar a crear nuestro Plugin lo necesario es crear las cabeceras del mismo, así que el primer código que debemos poner arriba del todo es el siguiente.




<?php
/**
 * Plugin Name:  FS autores
 * Description:  Formulario para conocer posibles autores para este mismo blog utilizando un Plugin creado desde cero.
 * Version:      0.1
 * Author:       Ricard FS
 * Author URI:   https://ricardfs.es/
 * PHP Version:  7.2.28
 *
 * @category Form
 * @author   Ricard FS <soy@ricardfs.es>
 * @license  GPLv2 http://www.gnu.org/licenses/gpl-2.0.txt
 * @link     https://ricardfs.es
 */
?>

Como veis definimos las cabeceras del Plugin que no son más que los datos que el usuario que tenga nuestro Plugin para WordPress verá a la hora de activarlo y desactivarlo, así como la categoría, el autor, la licencia y el enlace a nuestra web por si lo quisiéramos subir al repositorio de WordPress, en la imagen siguiente vemos como quedará nuestro Plugin en la pantalla de administración de Plugins de WordPress.

Ahora que ya tenemos las cabeceras definidas es hora de meternos en materia, lo que queremos que haga nuestro Plugin es recoger los datos de un formulario y guardarlos en la base de datos para después poder descargarlos y mostrarlos en pantalla para que tengamos los datos de los diferentes candidatos bien listados y podamos verlos sin problema, de manera que lo primero que haremos será crear una tabla nueva en nuestra base de datos, para ello copiaremos y pegaremos el siguiente código en nuestro archivo “FS_autor.php”.




<?php
register_activation_hook
(__FILE__'FS_autor_init');

function 
FS_autor_init()
{
    global 
$wpdb;
    
$tabla_autores $wpdb->prefix 'autor';
    
$charset_collate $wpdb->get_charset_collate();
    
$query "CREATE TABLE IF NOT EXISTS $tabla_autores (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        nombre varchar(40) NOT NULL,
        correo varchar(100) NOT NULL,
        nivel_wp smallint(4) NOT NULL,
        mensage text,
        aceptacion smallint(4) NOT NULL,
        created_at datetime NOT NULL,
        UNIQUE (id)
        ) 
$charset_collate;";
    include_once 
ABSPATH 'wp-admin/includes/upgrade.php';
    
dbDelta($query);
}
?>

Lo primero que hacemos es activar la función FS_autor_init con el hook register activation, en la función, y suponemos que tenéis algunos conocimientos de SQL, estamos creando una tabla, siempre que no exista, con el nombre wp_autor, dicha tabla contiene los valores que más adelante veremos que estamos recogiendo en el formulario que también debemos crear, la tabla de la base de datos quedará como en la siguiente imagen.

El siguiente paso que realizaremos será el de crear un Shortcode, ¿para qué?, pues es sencillo, la forma más simple que se me ha ocurrido de poder añadir el formulario en cualquier artículo y tantas veces como yo quisiera es mediante un Shortcode, que es una de las formas que nos permite WordPress más correctas para esto, por tanto a continuación del código que ya tenemos copiaremos y pegaremos el siguiente.




<?php
add_shortcode
('FS_autor_form''FS_autor_form');
?>

Como podéis ver la creación de un Shortcode es bastante sencilla en WordPress, con una sola linea de código lo tenemos creado y es funcional a las mil maravillas, nuestro formulario de autores saldrá impreso en el lugar elegido por nosotros.

Ahora sí, es el momento de crear nuestro formulario para recoger datos de los posibles autores, y ya de paso guardaremos dichos datos en la base de datos de nuestro WordPress, ya sabéis, la nueva tabla que hemos creado hace un momento, para conseguirlo copiaremos y pegaremos a continuación del código que ya tenemos el siguiente.




<?php
function FS_autor_form()
{
    global 
$wpdb;
    if (!empty(
$_POST)
        && 
$_POST['nombre'] != ''
        
&& is_email($_POST['correo'])
        && 
$_POST['nivel_wp'] != ''
        
&& $_POST['aceptacion'] == '1'
    
) {
        
$tabla_autores $wpdb->prefix 'autor';
        
$nombre sanitize_text_field($_POST['nombre']);
        
$correo $_POST['correo'];
        
$nivel_wp = (int) $_POST['nivel_wp'];
        
$mensage sanitize_text_field($_POST['mensage']);
        
$aceptacion = (int) $_POST['aceptacion'];
        
$created_at date('Y-m-d H:i:s');

        
$wpdb->insert(
            
$tabla_autores,
            array(
                
'nombre' => $nombre,
                
'correo' => $correo,
                
'nivel_wp' => $nivel_wp,
                
'mensage' => $mensage,
                
'aceptacion' => $aceptacion,
                
'created_at' => $created_at,
            )
        );
    }
    
ob_start();
    
?>
    <form action="<?php get_the_permalink();?>" method="post" id="form_autor" class="cuestionario">
        <strong>¿QUIERES TRABAJAR EN ESTE BLOG, RELLENA EL CUESTIONARIO?</strong>
        <br /><br />
        <?php wp_nonce_field('graba_autor''autor_nonce');?>
        <div class="form-input">
            <label for="nombre">Nombre</label>
            <input type="text" name="nombre" id="nombre" required="required" />
        </div>
        <div class="form-input">
            <label for='correo'>Correo</label>
            <input type="email" name="correo" id="correo" required="required" />
        </div>
        <div class="form-input">
            <label for="nivel_wp">¿Cuál es tu nivel de WordPress?</label>
            <br /><br />
            <input type="radio" name="nivel_wp" value="1" required="required" /> Nada
            <br />
            <input type="radio" name="nivel_wp" value="2" required="required" /> Estoy aprendiendo
            <br />
            <input type="radio" name="nivel_wp" value="3" required="required" /> Tengo experiencia
            <br />
            <input type="radio" name="nivel_wp" value="4" required="required" /> Soy experto
        </div>
        <div class="form-input">
            <br />
            <label for="mensage">¿Porqué quieres trabajar con nosotros?</label>
            <textarea name="mensage" id="mensage" required="required="></textarea>
        </div>
        <div class="form-input">
            <input type="checkbox" id="aceptacion" name="aceptacion" value="1" required="required" /> Entiendo y acepto las condiciones
        </div>
        <div class="form-input">
            <input type="submit" value="Enviar" />
        </div>
    </form>
    <?php

    
return ob_get_clean();
}
?>

Como podéis ver en el código lo primero que hacemos es comprobar si nos entran datos por POST, de ser así los pasamos a variables y después los insertamos en la tabla que habíamos creado nueva en la base de datos de nuestro WordPress.

En cuanto al formulario en sí tampoco hay mucho que explicar, solo son un campo text de nombre, un campo email, cuatro campos radio para saber el nivel de WordPress de cada usuario interesado en ser autor del blog y un campo textarea para que nos explique un poco su experiencia como programador de WordPress, el formulario lo podéis ver en vivo aquí mismo, y si os interesa trabajar con nosotros pues ya de paso lo podéis rellenar.

¿QUIERES TRABAJAR EN ESTE BLOG, RELLENA EL CUESTIONARIO?



Nada
Estoy aprendiendo
Tengo experiencia
Soy experto

Entiendo y acepto las condiciones

Y por último pero no menos importante pasamos a listar todos los autores interesados en trabajar con nosotros y que lógicamente tenemos almacenados en nuestra base de datos, para ello crearemos un apartado en el admin de WordPress con el nombre autores, en dicho apartado crearemos una tabla sencilla donde listaremos todas las filas de nuestra tabla de la base de datos, para ello copiaremos y pegaremos el siguiente código.




<?php
add_action
("admin_menu""FS_autor_menu");

function 
FS_autor_menu()
{
    
add_menu_page("Formulario Autores""Autores""manage_options""FS_autor_menu""FS_autor_admin""dashicons-feedback"75);
}

function 
FS_autor_admin()
{
    global 
$wpdb;
    
$tabla_autores $wpdb->prefix 'autor';
    
$autores $wpdb->get_results("SELECT * FROM $tabla_autores");
    echo 
'<div class="wrap"><h1>Lista de autores</h1>';
    echo 
'<table class="wp-list-table widefat fixed striped">';
    echo 
'<thead><tr><th width="30%">Nombre</th><th width="20%">Correo</th>';
    echo 
'<th>WP</th>';
    echo 
'<th>MENSAGE</th>';
    echo 
'</tr></thead>';
    echo 
'<tbody id="the-list">';
    foreach (
$autores as $autor) {
        
$nombre esc_textarea($autor->nombre);
        
$correo esc_textarea($autor->correo);
        
$mensage esc_textarea($autor->mensage);
        
$nivel_wp = (int) $autor->nivel_wp;
        echo 
"<tr><td>$nombre</td>";
        echo 
"<td>$correo</td>";
        echo 
"<td>$nivel_wp</td>";
        echo 
"<td>$mensage</td>";
    }
    echo 
'</tbody></table></div>';
}
?>

Como veis primero llamamos a la acción admin_menu para activar nuestra función, seguidamente con add_menu_page añadimos todo lo necesario para tener nuestro item de menú en la barra lateral de WordPress, volvemos a llamar a la base de datos para extraer los datos de la tabla que habíamos creado, creamos primero el cuerpo de la cabecera de la tabla donde pondremos los títulos de la misma, y después con las distintas variables añadimos el cuerpo de la tabla con un bucle para que recorra todas las filas.

Como habéis podido ver crear un Plugin para WordPress no es una tarea tan difícil como parece, solo es cuestión de ponerse manos a la obra y de proponerse nuevas metas, esperamos que os haya servido para algo este pequeño tutorial, a continuación os dejamos el Plugin listo para descargar.

5 mayo, 2020 por ricard

ricard
Soy Ricard FS, me dedico a la programación desde el año 2000, me dediqué en pleno a WordPress desde el año 2015, ahora creo Plugins y Theme para WordPress desde código cero, y me gusta la divulgación de código, por ello la creación de este blog.

Deja tu comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: