Nuevo iPhone OS 4.0, Con multitarea. http://bit.ly/dbu9ga ^DZBueno 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 siguiente código es el encabezado del plugin:
1 2 3 4 5 6 7 8 9 | <?php /* Plugin Name: JusOnLain? Plugin URI: http://blog.dahousecat.net/2007/01/19/jusonlain Description: Plugin extremandamente simple para poner el número de personas conectadas a tu sitio web. Basado en el Script de Balú - <a href="http://www.baluart.net/articulo/40/usuarios-online-con-php-mysql.php">Usuarios Online con PHP & MySQL</a> posteado en <a href="http://www.baluart.net">BaluArt.net</a> Version: 0.1 Author: DaHouseCat Author URI: http://blog.dahousecat.net */ |
Esto es lo que veremos en el Panel:
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:
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php function dhc_jusonlain_install () { global $wpdb; //Obtiene el Prefijo de la BD y genera el nombre de la tabla. $table_name = $wpdb->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.
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.
1 2 3 4 5 6 7 | 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
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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.
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
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php function dhc_jusonlain_panel (){ //Cerramos PHP para poner una Zona de HTML puro. Y abrimos PHP solamente para llamar la función. ?> <div class="wrap"> <h3>¿Cómo funciona?</h3> <p><strong>JusOnLain?</strong> 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.</p> <p>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:</p> <strong>Esto:</strong> <blockquote><p>Usuarios en lÃÂnea en este momento : <?php jusonlain (); ?></p></blockquote> <strong>Muestra esto:</strong> <blockquote><p>Usuarios en lÃÂnea en este momento : <?php jusonlain (); ?></p></blockquote> <p><br />De esa manera, es fácil personalizarlo para su uso. =)</p> <p>Saludos...</p> <p><em>DaHouseCat</em></p> </div> //Abrimos PHP y cerramos la llave de la función. <?php } |
La siguiente función es la encargada de poner el botón que vemos en el panel de Opciones (options) que dice JusOnLain?.
1 2 3 4 5 6 | 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:
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 ()
1 2 3 | 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).
1 | 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.
1 | add_action('deactivate_jusonlain.php', 'dhc_jusonlain_uninstall'); |
Tiene la misma sintaxis que activate_
Pues según lo anterior el plugin tendria la siguiente forma:
1 2 3 4 5 6 7 8 9 | <?php /*Encabezado con la información del autor*/ /*Licencia, de preferencia la misma que WordPress*/ /*Funciones y todo lo que nuestro plugin vaya a hacer*/ /*Hooks para iniciar funciones automáticamente*/ ?> |
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.
[...] JusOnLain? – Destripando el Plugin de WordPress | DaHouseCat’s Blog [...]
[...] aprender a desarrollar plugins para wordpress, y buscando documentaci
[...] Lo he hecho basandome en la explicaci
He hecho una obra derivada de est
[...] Lo he hecho basandome en la explicaci
[...] JusOnLain? – Destripando el Plugin de WordPress » DaHouseCat’s Blog [...]
[...] JusOnLain? – Destripando el Plugin de WordPress » DaHouseCat’s Blog [...]
Como hacer un plugin en wordpress…
Tutorial bastante completo y sencillo para hacer un plugin de wordpress, de lo más interesante en la red…
[...] Jusonlain – Destripando el plugin – excelente para saber más acerca de los plugins de Wordpress ¿Te ha gustado este artÃculo? Subscribete vÃa Email, para ¡recibirlos en tu correo! Escrito para DaHouseCat el 21 de Abril de 2008 RSS 2.0 Trackback [...]
[...] JusOnLain? – Destripando el Plugin de WordPress » DaHouseCat’s Blog [...]
[...] JusOnLain? – Destripando el Plugin de WordPress » DaHouseCat’s Blog [...]