Contenido

WordPress 2.9.1

5 ene

+ 0

WordPress 2.9.1 ha visto la luz, despues de una serie de parches para solucionar algunos problemas, la versión estable ve la luz.[Descargar]

Digging into WordPress, libro disponible

30 dic

+ 1

Juan Andrés Milleiro me avisa via Twitter de que Digging into WordPress ya está disponible para comprar. Se trata de un libro con todo lo que puedes llegar a usar con WordPress recogido y muy bien explicado.

digging-into-wordpress
(Ver Imagen)

En el podremos ver, desde como configurar una instalación de WordPress hasta como optimizar la base de datos, pasando por conocer la anatomía un theme o como extender la funcionalidad de WordPress… basicamente todo lo que hemos ido viendo a lo largo de los años aquí en un libro de más de 400 páginas a todo color.

digging-into-wordpress-anatomy-theme
(Ver Imagen)
digging-into-wordpress-commonly-used
(Ver Imagen)
digging-into-wordpress-loop
(Ver Imagen)

Existen dos modalidades que nos permite adquirir el libro en formato PDF o en formato impresion (además incluye la versión PDF), dependiendo de cual elijamos el precio variará.

  • Versión PDF ($27)
  • Versión Impresa ($67)

Via

WordPress 2.9.1 RC1

30 dic

+ 3

Como ya avanzamos WordPress 2.9 iba a recibir una actualización que corrigiera una serie de fallos detectados. Esta versión, la RC1, nos acerca a la versión 2.9.1.[Descargar]

Lo mejor del blog en 2009

25 dic

+ 1

Parece mentira pero ya ha pasado un año, 2009 se nos va y nos ha dejado cosillas interesantes que podemos catalogar por meses.

Enero

  1. jsCron, portando Cron a Javascript
  2. Interesante forma de mejorar los comentarios con jQuery
  3. La página más visitada de aNieto2k (opensearch.php)
  4. Lanzamiento de jQuery 1.3
  5. Selectores CSS y frameworks actuales
  6. Divide formularios en pasos con jQuery
  7. Mini detección de Internet Explorer en Javascript
  8. Minimizando al máximo la detección del navegador
  9. Más…

Febrero

  1. No detectes el navegador, detecta las funcionalidades
  2. HTML5 llega al iPhone
  3. Usando Shortcodes como profesionales
  4. Google Latitude, el jueguete del día
  5. Evalua el nivel de estudios para poder leer tu web
  6. rel=”canonical”, lo último para combatir el contenido duplicado
  7. Primeras imagenes de Google Chrome para Mac Os X
  8. Programación Orientada a Objetos en Javascript
  9. Rendimiento de las técnicas de POO en Javascript
  10. jClass2k, define Class con javascript
  11. NOIE6Day, 18 de octubre día sin Internet Explorer 6
  12. Más..

Marzo

  1. El arte de lanzar errores en Javascript
  2. El contenido de tu WordPress debería ser móvil
  3. input type=”file” para ficheros múltiples por fin en versión nativa
  4. TinyTable, 2.5kb para unas tablas profesionales
  5. Mejorando rendimientos de las técnicas de POO en Javascript
  6. Detección de caras en Javascript con canvas
  7. Usando la caché interna de WordPress
  8. Confirmado: Internet Explorer 8 hoy, apartir de las 18:00
  9. Cargando javascript asincronamiente
  10. Internet Explorer 8, primeros impresiones técnicas
  11. Carga asíncrona de grandes cantidades de dátos con Ajax
  12. Dojo es el framework Javascript más rápido
  13. Más…

Abril

  1. Optimiza la carga de imagenes de tus aplicaciones web
  2. CSS Naked Day (9 de Abril del 2009
  3. Actualiza el código de tu Google Analytics
  4. Internet Explorer 8 como actualización automática para finales de Abril
  5. ¿px, em, %, pt, o palabras clave?¿Como definimos tamaños de fuentes?
  6. O3D API, crea aplicaciones 3D en tu navegador
  7. Introducción a los W3C Widgets
  8. Adios my-hacks.php, Adios!!
  9. Instala TODAS las versiones de Internet Explorer en tu PC
  10. Más…

Mayo

  1. Desarrollando para el HTC Magic (Android)
  2. Coloreando el código de nuestros posts
  3. wp_insert_post(), la insercción de posts en WordPress
  4. jQuery vs MooTools, ¿cual es mejor?
  5. Impresionantes técnicas CSS3 y tutoriales para conseguirlas
  6. Sexy Forms, el bueno, bonito y barato de los scripts para formularios
  7. V8 y SquirrellFish son realmente rápidos
  8. Todo lo que necesitas saber sobre los frameworks de themes de WordPress
  9. HTML5 vs HTML4, explicación gráfica
  10. Google apuesta por el HTML5 y lo hace a lo grande
  11. Más…

Junio

  1. Opera 10 beta ya ha visto la luz
  2. ¿Por que la gente no usa Opera?
  3. Creando Javascript Accesible
  4. Interesante curiosidad javascript
  5. Comparación de cálidad entre Ogg/Theora+Vorbis y Youtube h264
  6. Consumo de memoria de los navegadores modernos
  7. 10 shortcodes para hacerte la vida más fácil con WordPress
  8. El elemento video del HTML5
  9. Lanzado Firefox 3.5!
  10. Propuesta de subtítulos para el tag video en HTML5
  11. Más…

Julio

  1. Gazelle y Google Chrome OS, los SO del futuro para los amantes de la red
  2. Glow, otra librería javascript
  3. El elemento audio del HTML5
  4. Youtube se une contra Internet Explorer 6
  5. Mozilla Firefox 3.7, maquetas del nuevo interface
  6. WordPress Theme Frameworks, SandBox fué solo el principio
  7. Crea miniaturas con la propiedad clip de CSS
  8. La mejora manera de cargar javascript
  9. Más…

Agosto

  1. Google Wave, primeras impresiones
  2. Mozilla Firefox 3.6 Alpha 1: Lo que nos importa a los desarrolladores
  3. Navegadores modernos: ¿para que tanta velocidad?
  4. File API: La W3C tiene en cuenta a los ficheros
  5. El tag HTML5 dialog
  6. WordPress 2.9 con papelera de reciclaje
  7. Creando un querySelector() para IE tan rápido como el nativo
  8. Más…

Septiembre

  1. Cacheando contenido con PHP
  2. Minimiza y ordena tus CSS
  3. Reduce el consumo de memoria de tu WordPress
  4. HTML5: Expresiones regulares como filtros de inputs
  5. Adapta tu WordPress a la tecnología móvil
  6. Diferentes formas de optimizar el consumo de memoria de WordPress a prueba
  7. Nueva funcionalidad de WordPress 2.9 en la edición de imágenes
  8. Cachea cualquier cosa con Javascript
  9. Aplicaciones Javascript escalables
  10. Permisos y capacidades en WordPress
  11. Más…

Octubre

  1. Localización en Javascript
  2. Simple sistema de log para nuestro Javascript
  3. Y tenemos Google Wave…vale, ¿y que?
  4. Emprise Javascript Chart, gráficas profesionales en Javascript
  5. Gestiona la orientación con la nueva API de Firefox 3.6
  6. Diferencias CSS entre Internet Explorer 6,7 y 8
  7. Acelerándo la carga de Javascript con eval()
  8. Cuidando la base de datos de nuestro WordPress
  9. Mu Connect, librería Javascript para conectar con Facebook
  10. Más…

Noviembre

  1. Another World JS
  2. Wp-Answers, crea una comunidad de preguntas y respuestas con WordPress
  3. Rendimiento extremo de Javascript
  4. Preparándonos para la llegada de WordPress 2.9
  5. Detecta si una fuente está disponible desde Javascript
  6. IE9: Una vista al futuro de Internet Explorer
  7. 14 de Noviembre del 2009, un dia para recordar
  8. LABjs, cargando javascript más rápidamente
  9. Más…

Diciembre

  1. El src de una imágen puede cargarse tu página
  2. W3C Capture API, ampliando los periféricos de entrada en la web
  3. Las Meninas en 3D gracias a CSS
  4. Drag & Drop + File API + XMLHttpRequest = El futuro de la subida de ficheros
  5. Añade un traductor en 52 idiomas a tu página
  6. jpegcam, adelántate al W3C Capture API
  7. corMVC, modelo MVC basado en jQuery
  8. Opera Carakan le planta cara a Google V8
  9. Más…

Como crear tu propio Widget para WordPress

23 dic

+ 0

Sampedro de Rutarelativa me envia un artículo que ha publicado sobre como crear un widget para WordPress sacado de un caso real que usan en su web. Sin duda una buena base para afrontar la nueva API de Widgets.

WordPress 2.9.1 está al caer

23 dic

+ 14

Al parecer esta nueva versión va a durar poco, si, menos aún de lo que vienen durando últimamente. Al parecer han detectado 3 fallos que hacen sea necesario generar una versión nueva y volver a molestar al personal.

Los fallos detectados

Para solucionar estos fallos, tenemos un parche para solucionar los problemas sin tener que actualizar todo nuestro WordPress, que muy amablemente los chicos de Semiologic nos han unido. Simplemente son unos ficheros que se ubicarán en el directorio wp-includes/ de nuestro WordPress.

La versión 2.9.1

La nueva versión, que podría ver la luz en breve, no solo corregirá estos problemas, sino que solventará otros 17 errores menores que han sido ya detectados y se están solucionando para esta nueva versión.

Señores!, estamos en la web 2.0, el usuario aporta contenido… y también ayuda a depurar las aplicaciones sociales. Menos mal que el tiempo de respuesta para solucionar problemas es similar al de publicación de versiones :D

Optimiza la frecuencia de refresco del RSS de tu WordPress

21 dic

+ 4

Un módulo del estandar RDF, concretamente el destinado sobre la frecuencia de sincronización, que este próximo año cumplirá 10 años de su aparición nos permite especificar la frecuencia con la que los agregadores de noticia deben comprobar si el feed ha cambiado.

Por defecto WordPress, asume que eres una máquina y que no paras de actualizar en todo el día:

<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>

WordPress nos añade dos filtros para modificar esta frecuencia a nuestro gusto. Para ello bastará con incluir estas líneas en el fichero functions.php de nuestro theme para conseguir una frecuencia de sincronización de 4 veces al día.

add_filter( 'rss_update_period',    create_function( '', 'return "daily";' ) );
add_filter( 'rss_update_frequency', create_function( '', 'return 4;' ) );

Via

WordPress 2.9 disponible para descargar

19 dic

+ 11

Ya hemos ido viendo como la versión 2.9 de WordPress iba madurando poco a poco con nuevas funcionalidades y cosas realmente interesantes. Pues ahora ya podemos usarla en nuestros sitios web. WordPress 2.9, “Carmen” (en honor a Carmen McRae, una vocalista de Jazz), puedes instalarla descargandola desde aquí o actualizarla desde el panel de administración de tu WordPress.

WpMooSnow, ponle nieve a tu WordPress con MooTools

4 dic

+ 8

Sampedro de RutaRelativa desarrolla un plugin para WordPress que nos permite incluir nieve cayendo en nuestro blog. Algo muy interesante para las fechas que se acercan.[Demo][Descargar]

Truco del campo oculto antispam para WordPress más fácil todavía

4 dic

+ 13

Este artículo hace ya más de un año que comencé a escribirlo y hoy que he tenido unos minutos para repasarlo y modificar un poco el código lo termino.

Hace ya mucho tiempo, Jose Ramón (Manz) publicó en Emezeta un sistema bastante ingenioso para capear el problema del SPAM en nuestros blogs.

El sistema

antispam3
(Ver Imagen)

El sistema, se basa en pensar de forma dual a la hora de implementar el formulario de comentarios de tu blog (que apartir de este momento, va a ser WordPress), y barajar la idea de que un robot pueda rellenar los campos automáticamente haciendo que sus comentarios entraran como un comentario normal. Akismet, y demás plugins antispam, tienen una gran lista de URL’s, agentes de usuarios, emails e IP’s que comprueban para comprobar que un robot es malicioso o no, pero estos sistemas, como ya bien sabemos, no son del todo eficaces. Por eso, hemos de engañar al robot :D

¿Como lo engañamos?

La propuesta de Manz, es la de añadir un campo oculto (mediante CSS) con el nombre del elemento destinado para el nombre del usuario, en el caso de WordPress usaremos author, con un valor X predefinido.

<input type="text" name="author" value="X" class="oculto" />
// CSS
input.oculto {display:none;}

Este campo, será el señuelo que los robots editarán automáticamente al procesar la página, principalmente por que es un <input /> y además se llama author, lo que hace complicado saber si esa página lo tiene implementado o es una trampa.

Para los usuarios, incluiremos un nuevo elemento <input /> con un nombre a nuestra elección.

<input name="nombrebueno" type="text" class="author" />

El usuario, verá este campo y será en el que introducirá su nombre de usuario. A simple vista podemos ver el problema que nos encontramos al realizar este cambio, el nombre del usuario siempre será X, ya que WordPress está preparado para leer author como nombre de usuario, y evidentemente no conoce el campo nombrebueno que hemos creado nosotros.

Por este motivo hemos de modificar el código de WordPress para añadir unas pocas líneas (voy a explicar como lo tenía yo antes de implementar la funcionalidad que veremos abajo):

wp-config.php
define("SPAM_CONTROL", "kaminitos"); // No sé por que puse eso...
wp-comment-post.php
$comment_author       = ( isset($_POST['author']) )  ? trim(strip_tags($_POST['author'])) : null;
$comment_author_email = ( isset($_POST['email']) )   ? trim($_POST['email']) : null;
$comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

// Añadimos el control del campo nuevo
if ($_POST["author"] != SPAM_CONTROL) die("SPAM");
$comment_author       = ( isset($_POST['secure']) )  ? trim(strip_tags($_POST['secure'])) : null;

Se puede hacer más sencillo, editando únicamente el fichero wp-comment-post.php, pero de esta forma tengo control sobre lo que aparece en el campo oculto.

Evidentemente, este sistema, me obliga a añadir esas dos líneas de código cada vez que actualizo WordPress, lo que se convierte en algo, que aunque no es laborioso, es muy pesado. Para evitar tener que modificar el código de WordPress en cada actualización, yo propongo este código.

Sistema antispam de campo oculto más cómodo :D

// Mensaje que mostramos a los SPAM
define('MESSAGE', 'SPAM!!!');
// Nombre del campo que usaremos para alojar el verdadero nombre del usuario
define('NOMBRE_CAMPO', 'secure');
// Clave única que será modificada por el bot
define('WP_ANTI_SPAM', 'kko');

add_filter('pre_comment_author_name', '_pre_comment_author_name');
function _pre_comment_author_name($comment_author_name = ''){
 // Devolvemos el nombre del autor sinó estamos pasando los campos necesarios
 if (!isset($_POST['author'], $_POST[NOMBRE_CAMPO])) return $comment_author_name;

 // Matamos el proceso
 if (isset($_POST['author']) && $_POST['author'] != WP_ANTI_SPAM) die(MESSAGE);

 // Cambiamos el nombre del author
 global $wpdb;
 return $wpdb->escape(trim(strip_tags($_POST[NOMBRE_CAMPO])));
}

function get_anti_spam_input($comment_author){
 return '<input type="hidden" name="'.NOMBRE_CAMPO.'" value="'.esc_attr($comment_author).'" />';
}

function anti_spam_input($comment_author){
 echo get_anti_spam_input($comment_author);
}

function get_author_input($comment_author){
 return '<input type="hidden" name="author" value="'.WP_ANTI_SPAM.'" />';
}

function author_input($comment_author){
 echo get_author_input($comment_author);
}

Este código, lo incluimos en el fichero functions.php de nuestro theme. Como vemos en la parte superior, tenemos 3 define() que nos permiten declarar 3 variablesconstantes que nos hará nuestro sistema más personalizable. Después, vemos una función que se aplica al filtro pre_comment_author_name en la que comprobamos que el campo oculto no ha sido modificado. En caso de detectar el cambio, matamos el proceso en ese mismo momento, mostrando el mensaje que hayamos definido previamente.

En caso de que el campo oculto no haya sido modificado, entonces reemplazaremos el nombre de usuario por el del campo visible para el usuario. Este sistema nos permite intercalar este proceso y hacer que en caso comentario válido, continúe sin ningún problema.

Modificar el theme

Después para facilitar el trabajo de modificación del theme, he añadido unos métodos para pintar (o devolver como cadena) los elementos <input /> que intervienen en este sistema. Usaremos, como siempre, el theme default de WordPress, y usaremos únicamente el fichero comment.php del mismo.

Básicamente, el único cambio que tendremos que realizar es el cambio de esta línea:

<input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />

Por estas dos

<?php
 author_input($comment_author);
 anti_spam_input($comment_author);
?>

Estos dos funciones se encargarán de pintar los elementos <input /> que vamos a necesitar. Evidentemente, si tu theme tiene estilos o clases aplicados a estos elemento tendrás que modificarlos en las funciones get_anti_spam_input() get_author_input() del fichero functions.php que hemos incluido antes.

Sencillo, ¿verdad? :D

Resultado

El resultado, os puedo garántizar que es 100% satisfactorio y que junto a Akismet el SPAM (por el momento) deja de ser un problema.