Gadgets, Celulares, Telefonia, Electronic Music y mucho más…

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:

PHP:
  1. <?php
  2. /*
  3. Plugin Name: JusOnLain?
  4. Plugin URI: http://blog.dahousecat.net/2007/01/19/jusonlain
  5. 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>
  6. Version: 0.1
  7. Author: DaHouseCat
  8. Author URI: http://blog.dahousecat.net
  9. */

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.

PHP:
  1. function dhc_jusonlain_install () {
  2.     global $wpdb;
  3. //Obtiene el Prefijo de la BD y genera el nombre de la tabla.
  4.     $table_name = $wpdb->prefix . "dhc_jusonlain_users";
  5. //Buscamos si en la base de datos si la tabla existe. En caso de no existir creamos la tabla
  6.     if($wpdb->get_var("show tables like '$table_name'") != $table_name)
  7.     {
  8.     $sql = "CREATE TABLE ".$table_name." (
  9.         date int not null,
  10.         ip varchar(40) not null
  11.         );";
  12. //Incluimos el archivo upgrade-functions.php pues el contiene la función dbDelta()
  13.     require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
  14.     dbDelta($sql);
  15.     }
  16. }

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.

PHP:
  1. function dhc_jusonlain_uninstall () {
  2.     global $wpdb;
  3. //Eliminamos la Tabla
  4.     $table_name = $wpdb->prefix . "dhc_jusonlain_users";
  5.     $sql2 = "DROP TABLE ".$table_name;
  6.     $wpdb->query($sql2);
  7. }

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.

PHP:
  1. function jusonlain() {
  2.     global $wpdb;
  3. //Obtiene la IP del Visitante
  4.     $ip = $_SERVER["REMOTE_ADDR"];
  5.     $time=5;
  6.     $date = time ();
  7. //Generamos el limite de permanencia en la BD
  8.     $limite = $date-$time*60 ;
  9.     $table_name = $wpdb->prefix . "dhc_jusonlain_users";
  10. //Limpiamos todas las IP's almacenadas que ya superen el tiempo limite.
  11.     $wpdb->query("DELETE FROM $table_name WHERE date <$limite");
  12. //Sacamos las Ip's restantes de la BD
  13.     $resp = $wpdb->get_results ("SELECT * FROM $table_name WHERE ip='$ip'");
  14. //Si hay alguna IP solo actualizamos la base de datos, sino insertamos la nueva IP
  15.     if(count($resp) != 0) {
  16.         $wpdb->query("UPDATE $table_name SET date='$date' WHERE ip='$ip'");
  17.     }
  18.     else {
  19.     $exito = $wpdb->query ("INSERT INTO $table_name (date, ip) VALUES ($date,'$ip');");
  20.     }
  21. //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.
  22.     $resp = $wpdb->get_results ("SELECT * FROM $table_name");
  23.     echo count($resp);
  24. }

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.

PHP:
  1. function dhc_jusonlain_panel (){
  2. //Cerramos PHP para poner una Zona de HTML puro. Y abrimos PHP solamente para llamar la función.
  3. ?>
  4. <div class="wrap">
  5. <h3>¿Cómo funciona?</h3>
  6. <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: &#60;?php jusonlain (); ?>, la ventaja de esto es que puede colocarlo donde más le plazca o sirva.</p>
  7. <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>
  8. <strong>Esto:</strong>
  9. <blockquote><p>Usuarios en lí­nea en este momento : &#60;?php jusonlain (); ?></p></blockquote>
  10. <strong>Muestra esto:</strong>
  11. <blockquote><p>Usuarios en lí­nea en este momento : <?php jusonlain (); ?></p></blockquote>
  12. <p><br />De esa manera, es fácil personalizarlo para su uso. =)</p>
  13. <p>Saludos...</p>
  14. <p><em>DaHouseCat</em></p>
  15. </div>
  16. //Abrimos PHP y cerramos la llave de la función.
  17. <?php
  18. }

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?.

PHP:
  1. function dhc_jusonlain_add_menu() {
  2. //Revisamos que exista la función add_options_page
  3.     if (function_exists('add_options_page')) {
  4.         add_options_page('JusOnLain?', 'JusOnLain?', 8, basename(__FILE__), 'dhc_jusonlain_panel');
  5.     }
  6. }

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 ()

PHP:
  1. if (function_exists('add_action')) {
  2.     add_action('admin_menu', 'dhc_jusonlain_add_menu');
  3. }

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).

PHP:
  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.

PHP:
  1. 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:

PHP:
  1. <?php
  2. /*Encabezado con la información del autor*/
  3.  
  4. /*Licencia, de preferencia la misma que WordPress*/
  5.  
  6. /*Funciones y todo lo que nuestro plugin vaya a hacer*/
  7.  
  8. /*Hooks para iniciar funciones automáticamente*/
  9. ?>


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.

¿Te ha gustado este artículo? Subscribete vía Email, para ¡recibirlos en tu correo!

¿No encontró lo que buscaba? ¡Use el buscador!

 
Escrito para el 26 de January de 2007
RSS 2.0 Trackback

10 Comentarios este tema es Hot

  1. Tutoriales, trucos y videos para aprender a utilizar Wordpress | 5lineas.com | Internet, desarrollo web, tecnolog Dijo:

    [...] JusOnLain? - Destripando el Plugin de WordPress | DaHouseCat’s Blog [...]



    Escrito el 16 de February de 2007 a las 9:17
    Usando WordPress WordPress 2.1
  2. .: ZydRick.Org V 2.0 :. » Programando un plugin de wordpress Dijo:

    [...] aprender a desarrollar plugins para wordpress, y buscando documentaci



    Escrito el 14 de April de 2007 a las 7:24
    Usando WordPress WordPress 2.1.2
  3. .: ZydRick.Org V 2.0 :. » Haciendo un plugin para wordpress Dijo:

    [...] Lo he hecho basandome en la explicaci



    Escrito el 17 de April de 2007 a las 15:18
    Usando WordPress WordPress 2.1.2
  4. ZydRick Dijo:

    He hecho una obra derivada de est



    Escrito el 17 de April de 2007 a las 15:30
    Usando Mozilla Firefox Mozilla Firefox 2.0.0.3 en Windows Windows XP
  5. .: ZydRick.Net V 2.0 :. » Haciendo un plugin para wordpress Dijo:

    [...] Lo he hecho basandome en la explicaci



    Escrito el 14 de June de 2007 a las 5:44
    Usando WordPress WordPress 2.1.2
  6. TELARAÑA » Blog Archive » Tutoriales, trucos y videos para aprender a utilizar Wordpress Dijo:

    [...] JusOnLain? - Destripando el Plugin de WordPress » DaHouseCat’s Blog [...]



    Escrito el 28 de September de 2007 a las 5:26
    Usando WordPress WordPress 2.3
  7. Recopilación de recursos para Wordpress « Proyecto de Innovación Educativa Dijo:

    [...] JusOnLain? - Destripando el Plugin de WordPress » DaHouseCat’s Blog [...]



    Escrito el 22 de October de 2007 a las 10:06
    Usando WordPress WordPress MU
  8. meneame.net Dijo:

    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…



    Escrito el 7 de December de 2007 a las 2:02
    Usando Unknown browser
  9. Como acceder a la información del usuario actual y poner un menú la barra de administración de Wordpress † DaHouseCat Dijo:

    [...] 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 [...]



    Escrito el 21 de April de 2008 a las 21:09
    Usando WordPress WordPress 2.3.1
  10. Tutoriales, trucos y videos para aprender a utilizar Wordpress « El Cubanito Web Dijo:

    [...] JusOnLain? - Destripando el Plugin de WordPress » DaHouseCat’s Blog [...]



    Escrito el 22 de September de 2008 a las 8:47
    Usando WordPress WordPress MU

Deja un Comentario

Hey tu! usar emoticones te hace más cool!
                                         

Comparar precios y encontrar el mejor Telefono movil con twenga !
Descarga Musica, Videos, mp3 y mucho más Tutoriales de Fireworks en Español Guirichop Bucaneros de Campeche, Baloncesto Profesional Aeromental We Love Geeks! Licencia Creativa

Escriba su e-mail:

Reciba en su correo electrónico lo más reciente
en DaHouseCats Blog

Comentarios

Suscríbete

  •  
  • Add to Twitter
  • Add to Google Reader or Homepage
  • Add to Technorati Favorites

Disclaimer:

  • DaHouseCat, no se hace responsable acerca del mal uso que se le dé a la información contenida en los artículos y / o tutoriales, quedando en absoluta responsabilidad del usuario.

Administración

  • DaHouseCat
    Posts: 499 - 100%
    Comentarios: 4666 - 100%
    Pingbacks: 96 - 100%
    Score: 10119
499 posts, generados por 1 autores.

Buscar

 

M. Instántanea

B. de Blogueros

DaHouseCat en:

Blogs Amigos

Blogs Campeche

Webs Amigas

Categorías




Archivo

Recomendados

Este blog utiliza Worpress y fue diseñado por DaHouseCat - 2007
El contenido y algunas imagenes de DaHouseCat's Blog estan bajo la licencia de
Reconocimiento-NoComercial-SinObraDerivada 2.5