Micaela 2 de febrero de 2010 a las 08.00
   Imprimir artículo
elWebmaster.com

Tutorial para crear tu propio plugin de WordPress


wordpress_finalEl Codex de WordPress explica el funcionamiento de los plugins desde una perspectiva de referencia, pero la mejor manera de aprender a desarrollarlos es ver ejemplos de código real.

Este tutorial es una introducción al desarrollo de un plugin básico que utiliza PHP para guardar y recuperar datos de la base de datos de WordPress para mostrarlos en el sitio.

Crea un archivo PHP

Primero, crea un archivo PHP en una carpeta con un nombre único, esta carpeta residirá en la misma carpeta que los otros plugins, por lo que no puede tener un nombre que se repita. 😉

Este será el archivo dónde se guardará todo nuestro scripting para el plugin.

Funciones para usuarios y administradores

En el archivo PHP, comencemos creando dos funciones:

  1. function miwidget_public($args = false) {
  2. }
  3. function miwidget_admin() {
  4. }

Nuestro widget, a modo de ejemplo, se llama “Mi Widget”, que se referenciará como “miwidget_” en el código.

Estas dos funciones son el esqueleto para el código PHP que se ejecutará cuando el usuario visita la parte pública de tu sitio WordPress – en cualquier página que pongas el widget (vamos a llegar a eso en breve), así como la parte de administración cuando un usuario admin arrastra el widget a un panel lateral (bajo la sección Apariencia » Widgets):

1421

Siéntete libre de incluir cualquier código PHP en ambas funciones – lo que sea que desees ejecutar.

En la función de administrador, básicamente estarás programando la creación de un formulario HTML para que los usuarios puedan controlar los ajustes relacionados con el widget:

1422

En la imagen de arriba, se les pide a los usuarios información pertinente para hacer una llamada API (puedes poner cualquier cosa aquí- esto es sólo un ejemplo).

Por lo que, para los principiantes, la función administradora podría lucir así:

  1. function miwidget_admin() {
  2.  
  3.   $options_site = get_option("widget_miwidget_site");
  4.  
  5.   ?>
  6.  
  7.         <p>
  8.             Your Software URL:
  9.             <input type="text" name="p_link" id="p_link" value="<?php echo $options_site["p_link"]; ?>" style="width:99%;" />
  10.         </p>
  11.  
  12.         <p>
  13.             Your Software Username:
  14.             <input type="text" name="username" id="username" value="<?php echo $options_site["username"]; ?>" style="width:99%;" />
  15.         </p>
  16.  
  17.         <p>
  18.             Your Software Password:
  19.             <input type="password" name="password" id="password" value="<?php echo $options_site["password"]; ?>" style="width:99%;" />
  20.         </p>
  21.  
  22.   <?php
  23.  
  24. }
  25. &#91;/php]
  26.  
  27. Nota, de forma específica, los atributos <strong>value </strong>para cada elemento &lt;input&gt;.
  28.  
  29. Referenciamos la variable <strong>$options_site</strong>, que se declara antes de que el HTML tenga salida. $options_site llama a una función WordPress, <strong>get_option()</strong>, que devuelve valores desde la base de datos.
  30.  
  31. Si te estás preguntando cómo los valores llegan a la base de datos en primer lugar, lo hacen llamando a otra función de WordPress: <strong>update_option()</strong>.
  32.  
  33. Hechémosle un vistazo a la sintaxis que guarda los valores de la base de datos:
  34.  
  35. [php]
  36. update_option("widget_miwidget_site", $options_site);

La función update_option() acepta dos parámetros. El primero es el nombre único que utilizarás para referenciar estos valores de base de datos en tus scripts. El segundo es la variable que estás guardando en la base de datos. Puedes pasar un array aquí también, lo que es útil para colecciones de valores relacionados.

Tus valores se guardan en la tabla de base de datos wp_options. Los valores enviados como arrays serán serializados.

1423

Puedes crear tantas opciones distintas como desees, y todas se pueden guardar en la base de datos.

Continuando con la función administradora, cuando alguien complete los detalles y haga clic en “Guardar”, deberías llamar a la función update_option y pasar los valores a esta.

Así que, para modificar un poco la función admin:

  1. function miwidget_admin() {
  2.  
  3.   $options_site = get_option("widget_miwidget_site");
  4.  
  5.   if ($_SERVER["REQUEST_METHOD"] == "POST") {
  6.  
  7.       $options_site = array(
  8.  
  9.           "p_link" => $_POST["p_link"],
  10.           "username" => $_POST["username"],
  11.           "password" => $_POST["password"],
  12.  
  13.       );
  14.  
  15.       update_option("widget_miwidget_site", $options_site);
  16.  
  17.   }
  18.   else {
  19.  
  20.       ?>
  21.  
  22.             <p>
  23.                 Your Software URL:
  24.                 <input type="text" name="p_link" id="p_link" value="<?php echo $options_site["p_link"]; ?>" style="width:99%;" />
  25.             </p>
  26.  
  27.             <p>
  28.                 Your Software Username:
  29.                 <input type="text" name="username" id="username" value="<?php echo $options_site["username"]; ?>" style="width:99%;" />
  30.             </p>
  31.  
  32.             <p>
  33.                 Your Software Password:
  34.                 <input type="password" name="password" id="password" value="<?php echo $options_site["password"]; ?>" style="width:99%;" />
  35.             </p>
  36.  
  37.       <?php
  38.  
  39.   }
  40.  
  41. }
  42. &#91;/php]
  43.  
  44. Aquí nos fijamos si el botón "Guardar" fue presionado (if ($_SERVER&#91;"REQUEST_METHOD"] == "POST")),  y de ser así, creamos un array para los valores del formulario y actualizamos la base de datos.
  45.  
  46. En tu función <strong>public</strong>, puedes devolver los valores de la base de datos para que se muestren en el sitio:
  47.  
  48. [php]
  49. function miwidget_public($args = false) {
  50.  
  51.   $options_site = get_option("widget_miwidget_site");
  52.  
  53.   echo $options_site["html"];
  54.  
  55. }

Es así de simple.

Dado que hay un array “html” en $options_site, esto mostrará el contenido “html” en la sidebar en la parte pública de tu sitio WordPress.

Llama al código necesario para registrar el plugin en WordPress

Hay algunas cosas más que necesitamos hacer antes de que el widget sea reconocido y funcione en el sistema de WordPress.

Al final de tu archivo PHP, incluye el siguiente código:

  1. function widget_miwidget_init() {
  2.     register_sidebar_widget("Mi Widget", "widget_miwidget_public");
  3.     register_widget_control("Mi Widget", 'widget_miwidget_admin');
  4. }
  5.  
  6. add_action("plugins_loaded", "widget_miwidget_init");

Esto cargará el plugin en la página de administración, para que los usuarios puedan activarlo.

¡Y eso son los pasos básicos!

Lean la documentación oficial de WordPress sobre plugins para más detalles.

Fuente: Pain in the Tech


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (5)

  1. Jorge Vásconez dice:

    Esta súper interesante el post.

    Con esta información de soporte, solo queda creatividad de parte nuestra para desarrollar plugins que valgan la pena.

    Sería muy bueno que fuera publicándose más información de este tipo acerca de WordPress.

    Saludos.

  2. fabricio dice:

    muy bueno http://www.comunidad.tuspost.com para desarrollar una base para un plugin esta exelente

  3. Nacho martin dice:

    Gracias por la informacion, tenia grandes dudas sobre el manejo de mi pagina web con wordpress.
    OK

  4. angel matias orozco dice:

    Muy interesante ejemplo justo pq ahora estoy por migrar mi sitio a wordpress

  5. Jemmy beatriz villeda dice:

    Me gusta este sitio wordpress…….

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder