domingo, 5 de agosto de 2012

¿Cómo desarrollar un plugin para WordPress?

Si trabajas con WordPress sabrás que una de las formas más utilizadas de extender la plataforma es a través de los Plugins. Quizá muchas veces te has encontrado utilizando plugins construidos por terceros, pero nunca te has embarcado en la tarea de desarrollar un plugin. Aunque no lo creas, no es una tarea compleja, si ya posees conocimientos de programación.

En este breve artículo, explicaremos cómo construir uno sencillo. Espero te resulte útil!

imageAlcance de este pequeño plugin

Trabajo en algunos proyectos en WordPress en donde además de permitir el registro de usuarios por el método estándar, también permito que los usuarios ingresen al sistema con sus cuentas de Twitter o Facebook, para lo cual utilizo plugins existentes.

Sin embargo, en algunos casos, estos plugins permiten a los usuarios ingresar al sistema sin especificar su correo electrónico (en realidad eso depende de como los configures).

Lo que vamos a hacer en este breve ejemplo, es construir un plugin que le recomiende a los usuarios que no tengan configurado bien su correo, que lo hagan. Para ello agregaremos un widget en la SideBar con un cartel de advertencia, como el que puede verse la imagen de la derecha

Funcionamiento

Parte 1: verificación del correo del usuario

Nuestro plugin tendrá un funcionamiento sencillo.
Primero crearemos una función para consultar el correo electrónico del usuario. Trabajaremos con dos funciones de WordPress:
  • is_user_logged_in: para verificar si hay un usuario conectado.
  • wp_get_current_user: para obtener la cuenta de correo del usuario conectado.
En nuestro caso, a los usuarios que ingresan usando la autenticación de Twitter o Facebook, se les crea un correo electrónico obligatorio ficticio:
  • Los de Facebook contienen el dominio “unknown.com”
  • Los de Twitter comienzan con el nombre “changeme”
Nuestro algoritmo determinará si el correo posee esas cadenas para decidir si tiene que advertir o no al usuario.


Parte 2: widget

La segunda parte se encargará de mostrar una advertencia al usuario en un widget que podrá agregarse en el SideBar:
image

Además agregará un link que lleve al usuario a la página de configuración de su correo. En nuestro caso, como se trata de una red social vertical creada con el plugin BuddyPress, utilizaremos datos globales de BuddyPress que podemos obtener con la instrucción:

global $bp;

Y en particular la URL del perfil con:

$bp->loggedin_user->domain

¿Cómo se construye el plugin?

Simplemente se crea el código PHP respetando el encabezado especificado por WordPress (el código lo pueden ver en la próxima sección). El archivo puede grabarse como main.php y almacenarse en una carpeta dentro de la carpeta: /wp-content/plugins/. También será necesario almacenar un archivo readme.txt.

Una vez que hayamos almacenado el plugin en la carpeta correspondiente aparecerá en la lista de nuestros plugins inactivos listo para activarlo:

image

Una vez activado, sólo nos queda agregar el widget en la SideBar y ya podemos comenzar a utilizarlo.

image

El código

A continuación les pego el código completo:

<?php

/*
Plugin Name: Autonautas Mail Verification
Plugin URI: http://viviendoenlaeradelaweb20.blogspot.com/
Description: Verifica que el usuario tenga bien configurado su correo. Caso contrario emite una alerta en el SideBar.
Version: 1.0
Author: Juan Pablo Pussacq Laborde
Author URI: http://viviendoenlaeradelaweb20.blogspot.com/
License: GPL2
*/

function autonautas_mail_read () {

    $resultado = "OK";

    // Sólo se controla al usuario conectado
    if ( is_user_logged_in() ) {

        $usuario_actual = wp_get_current_user();
        $correo_actual = $usuario_actual->user_email;

        // Sufijo que tienen los mails de los usuarios registrados con Twitter
        $buscado_t = strpos($correo_actual, "changeme");

        // Sufijo que tienen los mails de los usuarios registrados con Facebook
        $buscado_f = strpos($correo_actual, "unknown.com");

        if ( ($buscado_t !== FALSE) or ($buscado_f !== FALSE) ) {
            $resultado = "MAL";
            }
        }

    return $resultado;
}

add_action('wp_head','autonautas_mail_read');

function autonautas_mail_widget () {

    $estado_correo = autonautas_mail_read ();
  
    if ( $estado_correo !== "OK" ) {

        global $bp; // Datos globales de BuddyPress

        echo "<p></p>";
        echo "<div style='padding: 15px; color: black; border-radius: 3px; background-color: white; border: 7px solid red;' id='autonautas_mail_verification'>";
        echo "<p></p>";
        echo "<center>";
        echo "<h3>Advertencia!!</h3>";
        echo "</center>";
        echo "<p></p>";
        echo "<p>Tu correo electrónico no está configurado. Ante cualquier problema con tu cuenta no podremos contactarte <a href='/2011/11/configura-tu-correo/'>[...]</a></p>";
        echo "<p></p>";
        echo "<p></p>";
        echo "<center>";
        echo "<img src='/wp-content/uploads/2011/08/mensajes.png'></img>";
        echo "<div id='autoayuda' class='activity-list'><div class='activity-header'><a width: 120px ; display: block; ' href='" . $bp->loggedin_user->domain . "settings/'>Configura tu correo</a></div></div>";
        echo "</center>";
        echo "<p></p>";
        echo "<p></p>";
        echo "</div>";
        }
}

wp_register_sidebar_widget('autonautas_mail_verification', 'autonautas_mail_verification', 'autonautas_mail_widget');

?>

Conclusión

Como pueden ver, crear un plugin no es complicado y muchas veces puede ayudarnos con ciertas actividades que no podemos resolver con otros plugins. Espero que les haya servido.

Hasta la próxima!

Enlaces de interés:

0 comentarios:

Publicar un comentario en la entrada