Cristalab

                 ¿Quieres registrarte?

Cómo crear un plugin para WordPress

Por: Inyaka
31 de Marzo del 2008
1751 de clabLevel
Otros artículos de Inyaka
7,235 visitas

Hola querido pueblo claber, este tip los va a ayudar a crear su primer plugin para Wordpress, para lo cual crearemos un archivo llamado saludo.php en la carpeta llamada "saludo" ubicada en carpeta_raiz/wp-content/plugins/ quedando:

carpeta_raiz/wp-content/plugins/saludo/saludo.php

vamos a empezar por lo básico, el saludo:

Código :

<?php
   /*
      Plugin Name: nombre del plugin
      Plugin URI: url oficial de tu maravilloso plugin
      Description: que carajos hace tu plugin
      Version: numero de intentos para que esta cosa resulte
      Author: Nombre del mono programador
      Author URI: url del mono programador
   */
   
   /*
      esto aparecerá directamente en el panel de 
      administración de plugins
   */ 
?>


Una vez presentado crearemos nuestra una función con un código algo complejo pero de gran performance en el mismo archivo.

Código :

<?php
// ya sabemos que hay arriba  /\  

   function saludo(){
      echo 'hola mundo';   
   }
   
?>

Ahora nos toca poder instalar y desinstalar este plugin para lo cual crearemos 2 funciones: una para instalar y otra para desinstalar el plugin. Eestas funciones por ahora las dejaremos vacías, una vez listas las funciones al final del archivo usarás la funcion de WP add_action para instalar y desinstalar el plugin.

usamos la siguiente sintaxis:

Código :

add_action( 
   'activate_nombre_del_plugin/pagina_del_plugin.php',
   'tu_funcion_que instala'
);


Código :

<?php
// ya sabemos que hay arriba  /\  
   function saludo_instala(){
      //   
   }
   function saludo_desinstala(){
      //   
   }   
//ojo con la sintaxis de la funcion add_action 
add_action('activate_saludo/saludo.php','saludo_instala');
add_action('deactivate_saludo/saludo.php', 'saludo_desinstala');
?>


Ahora ya puedes usar tu maravilloso y complejo plugin, sólo debes colocar en la sección de tu template que estimes conveniente lo siguiente:

Código :

<?php saludo(); ?>


Ahora nos toca crear un item dentro del panel de administración que nos permita modificar las opciones de este maravilloso plugin, este item lo crearemos dentro del menú opciones, para esto contaremos con 3 funciones:

Código :

<?php
// ya sabemos que hay arriba  /\ 
   
   function saludo_panel(){      
      include('template/panel.html');
   }
   function saludo_add_menu(){   
      if (function_exists('add_options_page')) {
         //add_menu_page
         add_options_page('saludo', 'saludo', 8, basename(__FILE__), 'saludo_panel');
      }
   }
   if (function_exists('add_action')) {
      add_action('admin_menu', 'saludo_add_menu'); 
   } 
      
// ya sabemos que hay abajo   \/  
?>

crea el archivo y carpeta "template/panel.html" pues vamos a escribir un fromulario muy sencillo para que veamos que esto va resultando:

Código :

<form method="post" action="" id="saludo">
<label for="saludo_inserta" accesskey="s">Inserte su saludo<input type='text' id='saludo_inserta'  name='saludo_inserta' value='' /></label>
<input type='submit' name='' value='enviar' />
</form>

y modificaremos la función saludo_panel para poder visualizar nuestros logros

Código :

<?php
// ya sabemos que hay arriba  /\ 
   
   function saludo_panel(){      
      include('template/panel.html');
   }
   echo "<h1>{$_POST['saludo']}</h1>";
   
// ya sabemos que hay abajo   \/  
?>

Ahora probaremos que esto resulta escribiendo la siguiente verdad "Joomla apesta". Si al pulsar 'enviar' aparece esto significa que vamos bien.

Ahora desinstalaremos el plugin en el panel de control, no es que vayamos a dejar de usar nuestro maravilloso plugin, sólo es que modificaremos la función saludo_instala() y saludo_desinstala() para poder instalar y desinstalar respectivamente la DB que usaremos más adelante.
Ojo para usar las funciones de WP que manejan la DB tendremos que llamar $wpdb con: global $wpdb;

Código :

<?php
// ya sabemos que hay arriba  /\ 

function saludo_instala(){
   global $wpdb; // <-- sin esto no funcionara nada con la DB no cambies nada
   $table_name= $wpdb->prefix . "saludos";
   $sql = " CREATE TABLE $table_name(
      id mediumint( 9 ) NOT NULL AUTO_INCREMENT ,
      saludo tinytext NOT NULL ,
      PRIMARY KEY ( `id` )   
   ) ;";
   $wpdb->query($sql);
   $sql = "INSERT INTO $table_name (saludo) VALUES ('Hola Mundo');";
   $wpdb->query($sql);
}   

function saludo_desinstala(){
   global $wpdb; 
   $tabla_nombre = $wpdb->prefix . "saludos";
   $sql = "DROP TABLE $tabla_nombre";
   $wpdb->query($sql);
}   
   
// ya sabemos que hay abajo   \/  
?>

ahora agregaremos datos a la DB desde nuestro panel en opciones/saludo para lo cual modificaremos la función saludo_panel()

Código :

<?php
// ya sabemos que hay arriba  /\ 

function saludo_panel(){
   include('template/panel.html');         
   global $wpdb; 
   $table_name = $wpdb->prefix . "saludos";
   if(isset($_POST['saludo_inserta'])){   
         $sql = "INSERT INTO $table_name (saludo) VALUES ('{$_POST['saludo_inserta']}');";
         $wpdb->query($sql);
   }
}
      
// ya sabemos que hay abajo   \/  
?>


Ahora que ya podemos insertar saludos en nuestra DB sólo nos queda poder mostrarlos en nuestra función saludo() para esto consultaremos tan solo un saludo de manera random a nuestra DB (ojo con el sql)

Código :

<?php
// ya sabemos que hay arriba  /\ 

function saludo(){
   global $wpdb; 
   $table_name = $wpdb->prefix . "saludos";
   $saludo= $wpdb->get_var("SELECT saludo FROM $table_name ORDER BY RAND() LIMIT 0, 1; " );
   include('template/saludo.html');      
}
   
// ya sabemos que hay abajo   \/  
?>


Ahora modificaremos nuestro saludo.html para que imprima la variable $saludo

Código :

<h1><?php echo $saludo;?></h1>


Para terminar vamos modificar el html de nuestro panel para que se adapte al html del administrador de WP

Código :

 <div class="wrap"> 
   <form method="post" action="">
      <fieldset>
         <legend>Ingresar Nuevo Saludo</legend>
         <label for="saludo" accesskey="s">Inserte su saludo<input type='text' id='saludo_inserta'  name='saludo_inserta'  /></label>
         <input type='submit' name='' value='enviar' />
      </fieldset>
   </form>
</div>


Ya tenemos listo nuestro plugin, también podríamos eliminar registros, pero eso se los dejo a su imaginación.
Agradecimientos especiales a gato casero pues los plugins y tutoriales publicados en su web me ayudaron bastante

archivos del tutorial


Artículos Relacionados


Etiquetas wordpress

Comentarios | Enviar un comentario
bueno...!
Por: Wayside
buen inicio para la creación de plugins, ya se me ocurren ideas para aplicarlo con la nueva versión del WP ^^ .
Por: Otaku RzO
Está muy c00l!!! Enhorabuena! (y)
Por: The Fricky!
Muy bueno ..pero todavía algo artesanal..ejor esperar a qe Zend saque algo como el manejo de las APIS que tienen(Flickr, Yahoo...) que son muy decentes, manejado con clases pero como digo muy buen comienzo
Por: vanvanero_blog
Excelente inyaka, con eso me das un panorama general de lo que tengo que hacer, pero esa es otra historia.

Muy buen tip :D
Por: flashreloco
Que lujo de tutorial!! hey hermano Inyaka, honestamente que es de mucha utilidad este tuto, solo te diré que partiendo de tu información acá, voy a intentar crear mi plugin el cual a su vez pienso compartir con todo Cristalab, sólo que les pediré un cacho de ayuda si la llegase a necesitar.
Por: abcmario
el mejor tutorial que vi hasta ahora para plugins! todo lo necesario, bien explicado y sin muchas complicaciones!!! Felicitaciones!.
Por: Bruno-blog
Muy buen totorial me ayudo a perderle el miedo a la creacion de plugins, pense que era muchisimo mas dificil. Igual me falta leerme la API de wordpress, como para poder sacar mas probecho, aunque con esto ya se puede hacer bastante.

Saludos.
Por: Rodrigo-blog
Excelente tutorial. Veo que la api del Wp tiene un gran parecido al api del Drupal. ¿En que apesta Joomla?.
Por: Osm-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.