Publicidad
Anotaciones reducidas
La vida en un día: Película de un día en la Tierra
La vida en un día -Life in a day- es una película hecha por los propios usuarios de Youtube, que durante el día 24 de Julio del 2010 grabaron las cosas que pasaban en su vida durante ese día, y el director Kevin McDonald ha reunido en forma de película de un día en la Tierra.
De una hora y media de duración, veremos todo tipo de escenas en todas las partes del mundo, con una emotiva visión del mundo real tanto con sus cosas bellas y buenas, como con la más cruda visión del ser humano y su realidad.
Video: Las posibilidades de Kinect
Cuando oímos hablar de Kinect, no podemos evitar pensar en un "simple" aparato de detección de movimientos para videojuegos, y en cierto modo es así.
Lo bueno es que Microsoft ha lanzado una SDK de Kinect para que los usuarios puedan crear aplicaciones que exploten las capacidades del dispositivo, dando lugar a miles de ideas.
El siguiente video es al fin y al cabo con fines publicitarios, pero nos da que pensar acerca de las aún sin explotar posibilidades de Kinect. Disfrutadlo.
A Space Journey: Una excursión por el espacio en un video HD
A mi personalmente me encanta ver imágenes y fotografías del espacio, ver planetas lejanos, nebulosas o constelaciones. Es por eso que quiero compartir con ustedes A Space Journey, una excursión por el espacio en un video HD de Youtube, acompañado por una buena música y una ingente cantidad de fotografías espaciales.
Realmente merece la pena ver el video en pantalla completa y seleccionando que se reproduzca a 720p para disfrutar más del mismo.
[A Space Journey: Una excursión por el espacio en un video HD]
La historia de los Exploradores Web
Desde prácticamente los comienzos de Internet los Exploradores Web o Navegadores web nos han acompañado, haciendo las veces de herramientas indispensables para una navegación que a cada año que pasa se hace más cómoda y más intuitiva.
En Testking encuentro una imágen que contiene un gran esquema de la historia de los Exploradores Web desde el primer Nescape en 1994 hasta los navegadores modernos de este año 2011.
Una imágen interesante para conocer cuál ha sido la evolución en éste área.
Mapa de vuelos mundiales en 24 horas [Video]
Interesante video donde se muestra un mapa de vuelos mundiales en 24 horas, siendo cada punto amarillo la representación de un avión. Viendo el video podemos apreciar el impresionante afluente de vuelos en Estados Unidos y Asia, pero sobre todo la gran cantidad de vuelos en Estados Unidos.
Últimos comentarios
Fans en Facebook de Ruta Relativa
Lo más comentado
Lo más visto
Post al azar
Información sobre Lost [Perdidos]
Publicado por sergiocius el día 04/05/2010Guardado en Web
Algunas técnicas y trucos para promocionar páginas web (I)
Publicado por sergiocius el día 06/07/2010Guardado en Internet,SEO
GigaTweet: Cuenta cuantos Tweet existen en tiempo real
Publicado por KeLDroX el día 11/05/2010Guardado en Twitter
Animación de un Crash Test Dummy en Stop Motion
Publicado por sergiocius el día 10/05/2010Guardado en Humor,Videos
10 trucos para tus fiestas de Navidad
Publicado por KeLDroX el día 15/12/2009Guardado en Curiosidades,Videos
En este tutorial veremos como crear un Widget para WordPress. Pondremos como ejemplo el Widget “Editores de Ruta Relativa” (puedes verlo en nuestro sidebar), en el que mostraremos los editores del Blog con sus últimas X entradas publicadas. La explicación del código se encuentra comentada en los archivos, aquí mostrare sólo de forma global como crear un Widget.
Necesitamos ante todo disponer de un theme que soporte Widgets, tal y como aprendimos en el tutorial “WordPress: Crear theme para usar Widgets“. Recomiendo hacer las pruebas en nuestro servidor local por las posibles incidencias que podrían ocurrir mientras realizamos nuestro Wiget y una vez terminado se actualizaría en el servidor de producción. Podremos continuar cuando tengamos un theme que soporte Widgets.
Como hemos comentado anteriormente, nuestro Widget mostrará los editores del Blog con sus últimas X entradas publicadas. Un nombre por ejemplo seria “Últimos post por autor”. Tendremos que comprobar si dicho nombre existe ya para otro plugin, para evitar posibles incompatibilidades si tenemos los dos instalados. Podríamos usar el buscador de plugins de WordPress o el propio Google para verificar si existe un plugin con el mismo nombre.
Comenzamos creando un directorio con el nombre de nuestro Widget en el directorio “wp-content/plugins/”. Aquí es donde WordPress almacena los plugins. Recomiendo crear un directorio siempre que se crea un Widget, aunque éste contenga sólo un archivo, ya que más tarde podrías incorporarle más archivos y te verías obligado a tocar porciones del código del Widget. En nuestro caso vamos a crear el directorio “ultimos-post-por-autor” y dentro de él un archivo llamado “widget-ultimos-post-por-autor.php”
<?php
/*
Plugin Name: NOMBRE_DE_NUESTRO_PLUGIN
Plugin URI: URL_DONDE_EXISTE_INFORMACION_DE_NUESTRO_PLUGIN
Description: DESCRIPCION_DE_NUESTRO_PLUGIN
Version: VERSION_DEL_PLUGIN
Author: AUTOR_DEL_PLUGIN
Author URI: URL_DEL_AUTOR
*/
?>
Toda esta información se utilizará para identificar nuestro Widget en la administración de plugins para WordPress, como podemos ver en la siguiente imagen.
![]()
// Cuando se inicializa el widget llamaremos al metodo register de la clase Widget_ultimosPostPorAutor
add_action( "widgets_init", array( "Widget_ultimosPostPorAutor", "register" ) );
// Clase Widget_ultimosPostPorAutor
class Widget_ultimosPostPorAutor
{
// Panel de control que se mostrara abajo de nuestro Widget en el panel de configuración de Widgets
function control()
{
echo "Hola, soy el panel de control.";
}
// Metodo que se llamara cuando se visualize el Widget en pantalla
function widget($args)
{
echo $args["before_widget"];
echo $args["before_title"] . "Editores de " . get_option( "blogname" ) . $args["after_title"];
echo "Hola soy tu Widget";
echo $args["after_widget"];
}
// Meotodo que se llamara cuando se inicialice el Widget
function register()
{
// Incluimos el widget en el panel control de Widgets
register_sidebar_widget( "Últimos post por autor", array( "Widget_ultimosPostPorAutor", "widget" ) );
// Formulario para editar las propiedades de nuestro Widget
register_widget_control( "Últimos post por autor", array( "Widget_ultimosPostPorAutor", "control" ) );
}
}
Una vez guardado nos dirigiremos al Panel de Control de plugins y lo activaremos. Una vez activado, vamos a las opciones de los Widgets, dentro del submenú apariencia, y lo añadiremos a nuestro sidebar. En nuestro template aparecerá nuestro Widget.

Se añadirá fuera de la clase del Widget las llamadas a “register_activation_hook” y “register_deactivation_hook”, que serán las encargadas de llamar a los métodos de la clase cuando se active o desactive el plugin. Tambien se añadirán dos nuevas funciones llamadas “activate” y “deactivate” que serán para los métodos llamados.
// Cuando se active el plugin se llamara al metodo activate de la clase Widget_ultimosPostPorAutor
// donde añadiremos los argumentos por defecto para que funcione el plugin
register_activation_hook( __FILE__, array( "Widget_ultimosPostPorAutor", "activate" ) );
// Cuando se desactive el plugin se llamara al metodo desactivate de la clase Widget_ultimosPostPorAutor
// donde se eliminaran los argumentos anteriormente guardados, para tener una DB limpia
register_deactivation_hook( __FILE__, array( "Widget_ultimosPostPorAutor", "deactivate" ) );
function activate()
{
// Argumentos y sus valores por defecto
$aData = array( "SIZE_AVATAR" => 50, "NUMERO_POST" => 5 );
// Comprobamos si existe opciones para este Widget, si no existe las creamos por el contrario actualizamos
if( ! get_option( "ultimosPostPorAutor" ) )
add_option( "ultimosPostPorAutor" , $aData );
else
update_option( "ultimosPostPorAutor" , $data);
}
function deactivate()
{
// Cuando se desactive el plugin se eliminaran todas las filas de la DB que le sirven a este plugin
delete_option( "ultimosPostPorAutor" );
}
Como se puede apreciar, hemos creado dos datos que son dinámicos para nuestro Widget. Uno llamado “SIZE_AVATAR” que será el que contenga el tamaño para el avatar de los editores. Y otro llamado “NUMERO_POST” que es el encargado de mostrar el número máximo de posts por editor.
Usaremos el método control para la visualización y actualización de las opciones de nuestro Widget.
// Panel de control que se mostrara abajo de nuestro Widget en el panel de configuración de Widgets
function control()
{
$aData = get_option( "ultimosPostPorAutor" );
// Mostraremos un formulario en HTML para modificar los valores del Widget
?>
<p>
<label>Tamaño del avatar:</label>
<input name="ultimosPostPorAutor_SIZE_AVATAR" type="text" value="<?php echo $aData["SIZE_AVATAR"]; ?>" />
</p>
<p>
<label>Numero máximo de post:</label>
<input name="ultimosPostPorAutor_NUMERO_POST" type="text" value="<?php echo $aData["NUMERO_POST"]; ?>" />
</p>
<?php
// Si se ha enviado uno de los valores del formulario por POST actualizaremos los datos
if( isset( $_POST["ultimosPostPorAutor_SIZE_AVATAR"] ) )
{
$aData["SIZE_AVATAR"] = attribute_escape( $_POST["ultimosPostPorAutor_SIZE_AVATAR"] );
$aData["NUMERO_POST"] = attribute_escape( $_POST["ultimosPostPorAutor_NUMERO_POST"] );
update_option( "ultimosPostPorAutor", $aData );
}
}
En el Panel de Control de Widgets, dentro de “apariencia”, nos mostrará el sidebar con nuestro Widget en él. Si desplegamos las opciones podremos editarlas como se aprecia en la imagen a continuación.

<?php
function widget($args)
{
// Variables
$aData = get_option( "ultimosPostPorAutor" );
$aUsuarios = null;
$aUsuario = null;
$aPosts = null;
$aPost = null;
global $wpdb;
// Cargamos en un array todos los editores del blog
$aUsuarios = $wpdb->get_results( "SELECT ID, user_login, user_nicename, user_email FROM " . $wpdb->users . " WHERE user_login != "admin"" );
// Recorremos todos los editores
foreach( $aUsuarios as $aUsuario )
{
echo "<li>
<a class="avtr" rel="nofollow" title="Avatar del autor " . $aUsuario->user_login . "" href="/author/" . $aUsuario->user_nicename . "/">
" . get_avatar( $aUsuario->user_email, $aData["SIZE_AVATAR"] ) . "
</a>
<div>
<a rel="nofollow" title="Perfil del autor " . $aUsuario->user_login . "" href="/author/" . $aUsuario->user_nicename . "/">" . $aUsuario->user_login . "</a>
<a onclick="document.getElementById(\"slde-edit" . $aUsuario->user_nicename . "\").style.display = (document.getElementById(\"slde-edit" . $aUsuario->user_nicename . "\").style.display == \"block\" ? \"none\" : \"block\");" class="mas" href="javascript:void(0);"><span>[+]</span> Ver las últimas entradas publicadas</a>
<div class="post" id="slde-edit" . $aUsuario->user_nicename . "">
<ul>";
// Cargamos en un array todos los post de un editor
$aPosts = $wpdb->get_results( "SELECT ID, post_title, post_date, comment_count
FROM " . $wpdb->posts . "
WHERE post_status = "publish" and post_type = "post" AND post_author = " . $aUsuario->ID . "
ORDER BY post_date DESC
LIMIT " . $aData["NUMERO_POST"] );
// Recorremos todos los post del editor
foreach( $aPosts as $aPost )
{
// Obtenemos el permalink del post
$sSlug = get_permalink( $aPost->ID );
echo "<li>
<a title="" . $aPost->post_title . "" href="" . $sSlug . "">" . $aPost->post_title . "</a>
<span>" . date( "d/m/Y", strtotime( (string)$aPost->post_date ) ) . " - <a title="Comentarios para " . $aPost->post_title . "" href="" . $sSlug . "#comments">" . $aPost->comment_count . " comentario" . ($aPost->comment_count > 0 ? "s" : "") . "</a></span>
</li>";
}
echo "</ul></div></div></li>";
}
}
?>
En el método “widget” hemos añadido la funcionalidad del Widget, es decir mostrar los editores de Blog junto con sus X post que han escrito. Como dije antes en el código fuente del Widget que podéis descargaros al final del tutorial se encuentra todo documentado para no perderse.
Hemos aprendido a crear un Widget, usar el objeto “$wpdb” de WordPress para realizar nuestros consultas y añadir opciones al Panel de Control de Widgets en nuestra administración de WordPress. Ésta es la forma que he utilizado yo para crear el Widget “últimos post por autor”, seguramente existan muchos caminos mejores o peores para crearlo, así que eres libre de modificarlo a tu antojo. Se pueden añadir más funcionalidades como por ejemplo un efecto slide para visualizar los post, como se puede ver en Ruta Relativa. Si usas este Widget puedes modificar el CSS dentro del plugin.
Enlace: Demo Widget últimos post por autor
Enlace: Descargar Widget últimos post por autor
Fuente: Valums
Artículos relacionados
WpMooSnow: Plugin efecto nieve en JQuery para Wordpress
Publicado por KeLDroX el día 04/12/2009Guardado en Freebies,Javascript,Plugins,Wordpress
WpMooSnow: Plugin efecto nieve en Mootools para Wordpress
Publicado por KeLDroX el día 03/12/2009Guardado en Freebies,Javascript,Plugins,Wordpress
CommentLuv: Plugin Wordpress para atraer más comentarios
Publicado por sergiocius el día 22/12/2010Guardado en Descargas,Wordpress
Eliminar marco de Google Imágenes y no perder ninguna visita
Publicado por sergiocius el día 01/12/2010Guardado en Desarrollo,Web
Contactable: Plugin para wordpress para feedback y contacto
Publicado por sergiocius el día 24/06/2010Guardado en Plugins
Sobre KeLDroX
Desarrollador en entornos web y Diseñador de profesión, muy activo, que busca siempre enfrentarse a retos cada vez más dificiles. Si un día no hago algo nuevo o no he superado alguna dificultad para mi es un día vacío. Cuento con dos titulaciones: Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Desarrollo de Aplicaciones Informáticas. Fundé rutarelativa porque siempre quise tener un sitio en donde compartir mis experiencias profesionales y a los problemas que me enfrento día a día en el ámbito profesional.
tengo una duda…
como hago lo mismo pero con el widget “ultimos comentarios”. el que tienes tu esta personalizado, en mi pagina solo sale el nombre de la persona que comento y en que entrada y nada mas…
@Diego Para realizar el widget “últimos comentarios” tienes que seguir los mismos pasos que este tutorial, pero en lo que es la parte de obtener los datos y pintarlo es diferente, para explicártelo tendría que realizar un tutorial. Si este fin de semana tengo algo de tiempo realizare un tutorial para crear el widget “últimos comentarios”. Saludos!
Hola amigos como estan:
Tengo un problema con los widgets. Conclui el blog (http://miroslavmorant.com/prueba2) me despliega correctamente, pero al ingresar al administrador de WordPress http://miroslavmorant.com/prueba2/wp-admin, y querer editar los widgets que inserté, desaparecieron del Side Bar, porque sucedió esto? y como edito nuevamente mis widgets?. Agradeceria su respuesta. Muchas Gracias
Así de pronto se me ocurre que, al tener que activarlos, los debes de buscar entre todos los widgets y arrastrarlos al sidebar.
De todas formas a ver si a Keldrox se le ocurre algo, que sabe más de esto.
¡Saludos!
Hola Sergius:
Gracias por responder, les cuento que hallé la falla, es una falla o defecto del tema mio, que viene en la pagina del Cpanel (themes)functions.php.Hay que quitar la linea 15 : ‘id’ => ‘sidebar-$i’, y funcionó, asi que a los que les pueda ayudar esto, ahi les va. Muchas Gracias
Hola! muy buen post pero….
¿Como puedo hacer para que los widgets pueda ponerlos mas de una vez?
He modificado mi tema para poder poner una sidebar para cada página(y tambien archivo, 404, buscador..) por ahora al no tener ningun widget, le puse que salgan los de barra lateral principal, pero si dejo la misma barra para todos no tendria logica mi trabajo.
Gracias de antemano.
Me genera muchos caracteres de salida inválidos y al momento de tratar de modificar los valores por defencto no me aparece nada…. solo me aparece al visualizarlo las palabras “Hola, soy el panel de control.” que se han puesto al principio… alguna idea de que pasa?
Supongo que se debe a que tiene ya su tiempo… algunas funciones seguramente han cambiado o cosas así…
Escribir comentario en WordPress: Como crear un Widget