JusOnLain? – Destripando el Plugin de WordPress

Introducción

Bueno no pretendo hacer con esto un tutorial de como hacer un plugin para WordPress, de hecho aclaro que este plugin extremadamente sencillo lo realice para aprender un poco acerca del API de WordPress que es bastante extenso y cuento mi experiencia pues me he encontrado con que hay muy poca información en español así­ pues quizas esto ayude a otros a minimo tener una idea de como funciona un plugin como es que se instala y desinstala al momento de Activarlo y desactivarlo.
Trataré de explicarlo lo más posible, aunque para entender se requieren conocimientos previos de PHP y MySQL, así­ como conocer un poco acerca de Clases en PHP. Empecemos…

El Encabezado del Plugin.

El siguiente código es el encabezado del plugin:

Usuarios Online con PHP & MySQL posteado en BaluArt.net
Version: 0.1
Author: DaHouseCat
Author URI: http://blog.dahousecat.net
*/

Esto es lo que veremos en el Panel:

jusonlain_panel_plug

Como podrán ver, los datos que pusimos en el encabezado serán los usados en el Panel de Plugins, Primero vemos el Nombre del Plugin (Plugin Name), luego tenemos la versión (Version), la Descripción (Description), tanto el Plugin URI como el Author URI son links hacia el autor.

JusOnLain? consta de 5 funciones:

dhc_jusonlain_install ()

Esta función entra en acción cuando damos clic en el botón Activar (Activate), su función primaria es la de crear la base de datos para que el plugin pueda funcionar correctamente.

prefix . "dhc_jusonlain_users";
//Buscamos si en la base de datos si la tabla existe. En caso de no existir creamos la tabla
	if($wpdb->get_var("show tables like '$table_name'") != $table_name)
	{
	$sql = "CREATE TABLE ".$table_name." (
		date int not null,
		ip varchar(40) not null 
		);";
//Incluimos el archivo upgrade-functions.php pues el contiene la función dbDelta()
	require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
	dbDelta($sql);
	}
}
?>

Para llamar a esta función en necesario el hook activate_, los hooks nos van a permitir llamar a las funciones cuando se dispare determinado evento, en este caso, el evento será la activación de plugin. Los hooks son lo ultimo que se pone en el código del plugin.

Utilice la función dbDelta () pues me guiaba de la guí­a en WordPress Writing a Plugin pero podemos elminar la inclusión del archivo y el uso de dbDelta () si usamos la instrucción $wpdb (‘query’) pues esta lo que hace es ejecutar el query que le pasemos como parametro.

Como ven el funcionamiento es muy sencillo, algo importante es que todos los querys a la Base de Datos deben hacer utilizando la clase $wpdb en la referencia de esta clase pueden encontrar varios ejemplos de como funciona, $wpdb es una adaptación de ezSQL por lo tanto la Documentación de este nos servirá para entender un poco más el funcionamiento de la clase.

dhc_jusonlain_uninstall ()

Esta es la función de desinstalación del plugin, entra en acción cuando damos clic en el botón Desactivar (Deactivate), su función primaria es eliminar la Tabla que utilizaba el plugin para almacenar los datos durante su funcionamiento.

function dhc_jusonlain_uninstall () {
	global $wpdb;
//Eliminamos la Tabla
	$table_name = $wpdb->prefix . "dhc_jusonlain_users";
	$sql2 = "DROP TABLE ".$table_name;
	$wpdb->query($sql2);
}

No creo que requiera explicación solamente se trata de ejecutar el query para borrar la tabla en el momento en que la función es invocada por el hook deactivate_

Nota:

$wpdb debe ser declarado como global cuando se utiliza desde archivos externos o plugins, esto no sucede cuando es usado en templates. Note On Use en WordPress Codex

jusonlain()

Esta es la función principal, es la que hace todos los procesos para poder obtener el número de personas conectadas en ese momento. Lo hace a través de IP’s, cuando un usuario entra al blog, esta función se ejecuta tomando la IP del visitante y comparandola con las que hay en la Base de Datos, si no existe esa IP la agrega si existe la ignora. Controlado por un limite de tiempo así­ los datos no permanecen en la base de datos.

function jusonlain() {
	global $wpdb;
//Obtiene la IP del Visitante
	$ip = $_SERVER["REMOTE_ADDR"];
	$time=5;
	$date = time ();
//Generamos el limite de permanencia en la BD
	$limite = $date-$time*60 ;
	$table_name = $wpdb->prefix . "dhc_jusonlain_users";
//Limpiamos todas las IP's almacenadas que ya superen el tiempo limite.
	$wpdb->query("DELETE FROM $table_name WHERE date < $limite");
//Sacamos las Ip's restantes de la BD
	$resp = $wpdb->get_results ("SELECT * FROM $table_name WHERE ip='$ip'");
//Si hay alguna IP solo actualizamos la base de datos, sino insertamos la nueva IP
	if(count($resp) != 0) {
		$wpdb->query("UPDATE $table_name SET date='$date' WHERE ip='$ip'");
	}
	else {
	$exito = $wpdb->query ("INSERT INTO $table_name (date, ip) VALUES ($date,'$ip');");
	}
//Seleccionamos todos los valores de la Base de Datos y contamos cuantos nos devolvió este será el número mágico de visitantes en ese momento.
	$resp = $wpdb->get_results ("SELECT * FROM $table_name");
	echo count($resp);
}

Como verán esta función hace todo el proceso para obtener el número de visitantes conectados, y esta es la función que debemos colocar en algún lado del Script para que nos muestre el valor donde deseamos.

Añadiendo un Apartado al Panel de Opciones.

Este proceso es relativamente sencillo y pues podria decir que es una formula pues de esta manera he visto que en varios plugins ponen el apartado en el panel de administración, para ello requeriremos de una serie de pasos para lograrlo

dhc_jusonlain_panel ()

Esta función será llamada para mostrar su contenido en el panel de administración, después de que el usuario acceda al menu del plugin, yo utilice esta función para mostrar las salidas mientras debugueba el plugin, ahora muestra como funciona el plugin y la función ejecutada.


¿Cómo funciona?

JusOnLain? está hecho para funcionar de manera muy sencilla y fácil; lo único que debe hacer es colocar el siguiente código en cualquier parte de su blog: <?php jusonlain (); ?>, la ventaja de esto es que puede colocarlo donde más le plazca o sirva.

El plugin solo muestra en la pantalla un número, el cual corresponde a la cantidad de personas en lí­nea en ese momento; la razón por la cual solo imprime el número es para que usted pueda mostrarlo como mejor le parezca Ejemplos:

Esto:

Usuarios en lí­nea en este momento : <?php jusonlain (); ?>

Muestra esto:

Usuarios en lí­nea en este momento :


De esa manera, es fácil personalizarlo para su uso. =)

Saludos...

DaHouseCat

//Abrimos PHP y cerramos la llave de la función.

dhc_jusonlain_add_menu()

La siguiente función es la encargada de poner el botón que vemos en el panel de Opciones (options) que dice JusOnLain?.

function dhc_jusonlain_add_menu() {
//Revisamos que exista la función add_options_page
	if (function_exists('add_options_page')) {
		add_options_page('JusOnLain?', 'JusOnLain?', 8, basename(__FILE__), 'dhc_jusonlain_panel');
	}
}

Sintaxis de add_options_page : como primer parametro tenemos el titulo de la pagina web, el que se muestra en la barra de titulo del navegador, el segundo parametro es el nombre del botón en el panel, tercer parametro el nivel de acceso del usuario que puede utilizarlo (Revisar Niveles de Usuario) y Roles y Capacidades), el siguiente parametro servirá de identificador único para de un submenu que hayamos agredago (eso no lo cambien, así­ funciona bien).

Más información acerca de Agregar Menús de Administración para WordPress

Hasta aquí­ tenemos el plugin listo, pero para que las funciones dhc_jusonlain_install () y dhc_jusonlain_uninstall () puedan ejecutarse automáticamente para crear la Tabla o Eliminar la Tabla respectivamente y el hook necesario para poner el menú en el panel, es necesario llamar a tres HOOKS:

Añadiendo los Hooks

admin_menu : este hook se dispara cuando entramos al panel de opciones (options) llamando a la función asociada, en este caso la función dhc_jusonlain_add_menu ()

if (function_exists('add_action')) {
	add_action('admin_menu', 'dhc_jusonlain_add_menu'); 
}

La forma anterior es como deben ponese los hooks, revisando primero que exista la función add_action para evitar errores.

activate_ : este hook entra en acción en el momento de presionar en el apartado de plugins el botón Activar (Activate).

add_action('activate_jusonlain.php','dhc_jusonlain_install');

La sintaxis es sencilla add_action es una función que lleva como primer parametro la palabra activate_ seguida del nombre del archivo del plugin, como segundo parametro tenemos la función que deseamos se ejecute cuando este hook entre en acción.

deactivate_ : este entra en acción cuando en el apartado de plugins presionamos el botón desactivar (deactivate), para ello primero el plugin debe ser activado.

add_action('deactivate_jusonlain.php', 'dhc_jusonlain_uninstall');

Tiene la misma sintaxis que activate_

Estructura del Plugin

Pues según lo anterior el plugin tendria la siguiente forma:


Finalizando

Espero que esta explicación sea de ayuda y apoye a entender un poco más acerca de como crear los plugins para WordPress, se que este plugin no es muy complejo pero considero que es una buena base para aprender.

El API de WordPress es bastante grande y compleja y pues aun falta mucho por aprender pero en eso estamos, espero que la gente que sabe hacer plugins se ponga las pilas y nos traduzca aunque sea las funciones que usaron para su plugin, la documentación en español es casi nula y a mi me es un tanto complicado entender el ingles pero aun así­ aqui estamos dando lata.

11 Comentarios en “JusOnLain? – Destripando el Plugin de WordPress

  1. Pingback: meneame.net

Comentarios cerrados.