el post original esta en cristalab lo copio aca para dejarmelo como recordatorio
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:

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

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

add_action(
   'activate_nombre_del_plugin/pagina_del_plugin.php',
   'tu_funcion_que instala'
);
<?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:

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

* saludo_panel: donde incluiremos el html que será expresado en nuestro panel, como a mí no me gusta mezclar html dentro de la programación usaremos la función include() a modo de template .
* saludo_add_menu: donde se usará a su vez la función de WP add_options_page.
* add_action: para desencadenar todo esto usaremos esta función que es también parte del API de WP.

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

<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

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

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

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

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

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

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

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

7 Responses to “Como Crear un Plugin para WordPress”

  1. This site really has all of the information I needed concerning this subject and didn’t know who tto ask.

  2. I pay a visit day-to-day a few sites and blogs
    to read posts, however this webpage provides quality based posts.

  3. Otrohet erbjuder dig spänning som ?u länge har missat.

    ?u hittar säkerligen enn sexkontakt att tillfredställa
    dina behov – diskret sex utan förpliktelser.

    Vare sig ?u behöve? een het dejjt inför helgen eller en seig
    knullkompis så är detta det rätta stället för dig.

  4. I was wondering if you ever considered changing the layout
    of your blog? Its very well written; I love what youve got to say.
    But maybe you could a little more in the way of content so
    people could connect with it better. Youve got an awful lot of text for only having 1 or two
    images. Maybe you could space it out better?

  5. 6 GHz MSM8928 Snapdragon 400 Quad Core Processor and 1.
    Many people still use feature phones (also called flip phones), while many others don’t even have a cell phone at
    all. This literally leaves no escape for the
    victim of bullying; where once their bedroom was
    a safe haven away from the bullying and name calling at school,
    they are now carrying this bully around with them wherever they go.

  6. Definitely believe that which you stated. Your favorite justification seemed to be on the net the
    simplest thing to be aware of. I say to you, I certainly get irked while people think about worries that they plainly don’t know about.
    You managed to hit the nail upon the top and also defined
    out the whole thing without having side-effects , people can take a signal.

    Will probably be back to get more. Thanks

  7. Definitely believe that which you stated. Your favorite justification seemed to be on the net the
    simplest thing to be aware of. I say to you, I certainly get irked while people think about worries that they plainly don’t know about.
    You managed to hit the nail upon the top and also defined
    out the whole thing without having side-effects , people can take a signal.

    Will probably be back to get more. Thanks