Tiempo de lectura de una entrada en WordPress

tiempo de lectura reading time

Una de las cosas que más me han gustado siempre en los blogs son esas estimaciones del tiempo de lectura. La verdad es que ahora están en desuso pues desde la locura de las redes sociales la gente directamente no lee, pero molar la verdad es que molan.

Y no ha parado el desarrollo de soluciones para mostrar los tiempos estimados de lectura, y aquí tienes los que creo que son los mejores … 

  • WP Reading Time, mi preferido, muestra una pestaña en un lateral que va mostrando el tiempo que queda de lectura. También lo tienes cómo jQuery para cualquier web, no solo para WordPress, o lo puedes descargar también en github.
    wp reading time
  • Estimated post reading time: este es un clásico, y añade al principio de cada entrada un texto con el tiempo estimado de lectura que, cómo en la mayoría de estos plugins, defines en los ajustes del tema, anotando tu mismo la estimación de tiempo en palabras por minuto, que suele ser un estándar 250 palabras por minuto. Por lo demás es sencillo de usar: lo configuras, y donde quieras que aparezca el tiempo estimado en la entrada añades el “shortcode” [est_time]. Es algo manual pero así decides tu cuando se muestra y cuando no.
    Ajustes Shorcode Visualización
  • Reading time: Similar al anterior salvo en algunos detalles, puede que para ti importantes. Por ejemplo, no hace falta “shortcode”, por lo que se inserta automáticamente, y la otra diferencia es que el tiempo estimado de lectura se muestra en una barra de progreso, mucho más visual, seguramente del gusto de muchos. También dispone de ajustes para ajustar el tiempo estimado a tu gusto.
    visualización reading time
  • Post reading time: Otro veterano, y muy capaz. No solo tiene pantalla de ajustes para que lo configures a tu gusto, pudiendo incluso añadir tags HTML antes y después del código del plugin, sino que también ofrece un widget que mostrará el tiempo de lectura. En contrapartida no se inserta automáticamente en tu plantilla, sino que debes añadir el código siguiente donde quieras que se vea
    <?php post_read_time(); ?>

    … o sino usas el widget, claro.
    Ajustes Visualización Widget

Personalmente el que más me gusta, cómo indico arriba, es WP Reading time, pues a pesar de ser el más nuevo me parece el de visualización más atractiva, pero por opciones que no quede.

Ah, y aquí no pongo ninguno, que ya sé que no me leéis, solo guardáis los posts por si algún día os hacen falta :D

Menús del Escritorio que no funcionan tras actualizar a WordPress 3.5 (solución)

jquery+wordpress

El bueno de José Conti (ya no sé que adjetivos poner a este buen amigo), como es un tío la mar de exhaustivo, tras la actualización a WordPress 3.5, y viendo que había algunos problemas con la última versión de JQuery incluida, se puso a investigar.

Y tras mucho darle vueltas, desactivar plugins, vaciar cachés, yo que sé, de todo, lo mejor es que lo leas en su blog, ha dado con una solución sencilla, que es desactivar el concatenado de scripts.

Solo tienes que añadir esta línea en el archivo de configuración de WordPress (ya sabes, el famoso wp-config.php):

define('CONCATENATE_SCRIPTS', false );

La añades justo antes del final del archivo, o al menos asegúrate de que antes hay una línea que pone esto:

require_once(ABSPATH . 'wp-settings.php');

Guardas los cambios y ya deben funcionar perfectamente los menús de administración de WordPress.

Nivo Slider para WordPress


Hace tiempo que instalé en mi blog con la siguiente dirección http://www.vercrucerosbaratos.com el popular Nivo Slider que permite hacer un maravilloso slider de imágenes. Este extendido plugin lo podemos ver en http://nivo.dev7studios.com/. Ahora bien, si os vais al apartado de descargas, podéis ver que la versión para jQuery es gratuita, pero para WordPress hay que pagar por utilizarlo.

Por todo ello, si es gratis para jQuery y no para WordPress, y si además eliminamos la instalación de un plugin en WordPress, con el consiguiente ahorro de recursos, ¿por qué no hacerlo nosotros mismos?, ese fue mi pensamiento cuando lo instalé en mi blog, y con el presente, os invito a todos vosotros a que decubráis lo fácil que es y y os animéis a instalarlo de forma manual, siguiendo las pautas que a continuación os paso a relatar.
Lo primero que hacemos es cargar jQuery, en nuestro tema, para lo cual tenemos dos opciones:

  • Utilizar siempre la última versión de jQuery, mediante un enlace html
  • Descargar la última versión de jQuery y depositarla en una carpeta del tema

Para el primer caso, lo que debemos hacer es colocar las siguientes líneas de código en nuestro fichero funtions.php

function mimetodo()
if( !is_admin()){
   wp_deregister_script('jquery');
   wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false, '');
   wp_enqueue_script('jquery');
}
}
add_action('init', 'mimetodo');

En el segundo caso, debemos descargar el fichero javaScript de jQuery desde este enlace, y aconsejo que se utilice la versión minimizada para ahorrar espacio y mejorar el tiempo de carga de la página. El fichero descargado, que en el momento de redactar este post sería jquery-1.8.1.min.js, lo colocamos por ejemplo en una carpeta llamada scripts, de tal forma que si nuestro tema se llama temaPrueba,tenga el siguiente path /wp-content/themes/temaPrueba/scripts/jquery-1.8.1.min.js.
En este caso, el código que hay que implementar en el fichero functions.php, sería el siguiente:

function mimetodo() {
 if (!is_admin()) {
 wp_deregister_script( 'jquery' );
 wp_register_script( 'jquery', '/wp-content/themes/temaPrueba/scripts/jquery-1.8.1.min.js');
 wp_enqueue_script( 'jquery' );
 }
 }
 add_action('init', 'mimetodo');

Como puede verse, tanto en un caso como en otro, hemos puesto un condicional, de tal forma que cargue jQuery, sólo cuando no estemos en el área de administración. Ello es debido a que jQuery, ya viene instalado por defecto con la carga de WorPress, para la zona de la administración, y consecuentemente como la versión que cargamos nosotros y la que tiene por defecto WordPress posiblemente sean diferentes, conviene hacer esta distinción para evitar posibles conflictos.
Bien, pues con esto ya tenemos los cimientos colocados, ahora vayamos a la parte concreta de instalación del Nivo Slider y para ello lo primero que tenemos que hacer es descargarnos el plugin de jQuery llamado Nivo Slider acudiendo a la página que aparece al pinchar en este enlace.
El fichero descargado está comprimido en formato zip, y habrá que descomprimirlo. Nos debemos fijar un poco en la estructura de los directorios y los ficheros que contiene, y además en la carpeta denominada demo hay un ejemplo que nos puede servir de ejemplo para reproducir su estructura y la formación del código necesario en la hoja que estamos creando.

De momento, lo que tenemos que hacer es copiar los ficheros jquery.nivo.slider.js y jquery.nivo.slider.pack.js que son los que contienen las instrucciones javascript correspondientes a nuestra carpeta que hemos denominado scripts, igualmente en esta carpeta irá el fichero nivo-slider.css, que contiene el código de la presentación (hoja de estilo), y también copiaremos tal cual la carpeta themes que aparece en el documento descomprimido que nos hemos bajado.
Para aclarar cómo queda la dependencia de ficheros y directorios, os dejo a la izquierda una imagen de mi estructura de directorios, tal y como yo la tengo, indicando con una flecha los archivos necesarios de Nivo Slider, que a buen seguro clarificará mucho lo comentado en el párrafo anterior.
Bien, ahora en el fichero header.php de nuestro theme debemos indicar los ficheros css que se deben utilizar al mostrar la página html, en concreto, para esto yo tengo las siguientes instrucciones:

<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url');?>/scripts/nivo-slider.css" media="screen" />
 <link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url');?>/scripts/ themes/default/default.css" media="screen" />

Igualmente en el fichero footer.php he incluido la instrucción que incluye el fichero javascript que hace el efecto Nivo Slider, junto con las instrucciones necesarias para ello, en concreto he añadido lo siguiente, antes de la etiqueta que indica la finalización del cuerpo de la página.

<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/scripts/jquery.nivo.slider.pack.js"></script>



 <script type="text/javascript">

 $(window).load(function() {

 $('#nivoslider').nivoSlider();

 });

 </script>

He utilizado la función bloginfo(‘template_url’) de WordPress, que nos facilita el patch hasta la carpeta de scripts.

Por último lo que queda es añadir un conjunto de etiquetas, que contienen a las imágenes que queremos mostrar, y que se deberá incluir en el lugar de la página que deseamos aparezca (yo lo incluí dentro del fichero header.php pues el slider de imágenes me aparecía en la cabecera de cada página del blog), con la siguiente estructura:

<div id="slider">
		 <div class="slider-wrapper theme-default">
		 <div class="ribbon"></div>
		 <div id="nivoslider" class="nivoSlider">
			<img src="<?php bloginfo('template_url');?>/images/cruise1.jpg" data-thumb="<?php bloginfo('template_url');?>/images/cruise1.jpg" alt=""/>
	                <img src="<?php bloginfo('template_url');?>/images/cruise2.jpg" data-thumb="<?php bloginfo('template_url');?>/images/cruise2.jpg" alt="" />
	                <img src="<?php bloginfo('template_url');?>/images/cruise3.jpg" data-thumb="<?php bloginfo('template_url');?>/images/cruise3.jpg" alt="" data-transition="slideInLeft" />
			 <img src="<?php bloginfo('template_url');?>/images/cruise4.jpg" data-thumb="<?php bloginfo('template_url');?>/images/cruise4.jpg" alt=""/>
	                <img src="<?php bloginfo('template_url');?>/images/cruise5.jpg" data-thumb="<?php bloginfo('template_url');?>/images/cruise5.jpg" alt="" />
	                <img src="<?php bloginfo('template_url');?>/images/cruise6.jpg" data-thumb="<?php        loginfo('template_url');?>/images/cruise6.jpg" alt="" data-transition="slideInLeft" />
	 </div>
	 </div>
 </div>

Con todo este montaje, el efecto de slider de las imágenes debería salir, y además de una forma más eficiente que si cargamos el plugin, que además nos cuesta dinero.

Bien pues esto es todo, espero que os sirva para vuestro trabajo, y por supuesto os recomiendo que hagáis una salvaguarda de vuestro sitio, antes de hacer estos cambios, como corresponde hacer siempre que se incorporan modificaciones importantes al sitio web.

Ayuda WordPress está alojado en Gigas Cloud WordPress ¿quieres probarlo gratis por un mes?, ¡corre que se acaba la promoción!

Ajax con WordPress y jQuery

Jquery y Ajax

jQuery es un entorno de trabajo que facilita mucho la programación cuando hacemos uso de javascript. Además jQuery no cuenta sólo con esa ventaja, pues además de lo anterior, permite utilizar ajax en las hojas html con contenido dinámico de una forma muy eficiente y facilitando enormemente la labor. La gran ventaja que se obtiene al implementar ajax en nuestras páginas web, es que no es necesario refrescar toda la página, cuando se hace una petición de datos al servidor, sino que sólo es actualizado la parte que cambia de la página, con lo que conseguimos un importante ahorro de recursos y de mejoras significativas en el rendimiento de nuestro sitio.

Con jQuery, existen diferentes formas de utilizar la tecnología ajax en nuestros documentos html, entre otras podemos comentar las siguientes:

  • $.ajax(opciones)
  • $.get(url,[,datos][,success][,dataType])
  • .load(url,[,data][,success])
  • $.post(url,[,datos][,success][,dataType])

Existen más fórmulas y procedimientos desarrollados por jQuery para aplicar ajax a nuestras páginas html, pero en todo caso nos vamos a centrar en la primera fórmula expuesta en el listado anterior, pues los comentarios que siguen sirven igual para el resto

Yo estaba acostumbrado a aplicar estas técnicas sin mayor problema, pero fuera de cualquier entorno cms, como es WordPress, y el problema me surgió cuando al intentar utilizar estos procedimientos dentro de mi sitio web http://www.vercrucerosbaratos.com/ y para mayor precisión en la página http://www.vercrucerosbaratos.com/guias-turisticas/, me generaba un error que no llegaba a entender su motivación, y en concreto el error que me desconcertaba estaba en que no encontraba la url que figura en la fórmula $.ajax(), a pesar de que el fichero de tipo php al que me refería estaba alojado en el servidor y el path estaba correcto, luego entonces por qué me fallaba. La explicación está en que yo hacía referencia a un fichero php que estaba fuera del entorno de trabajo de WordPress, es decir, no lo tenía recogido en la base de datos mysql con la que trabaja, y por eso no conseguía localizar el fichero.

Para ir centrando mejor el problema, lo mejor es conocer el funcionamiento normal de la función ajax $.ajax de jQuery, la cual se puede consultar en el siguiente enlace http://api.jquery.com/jQuery.ajax/, en el cual entre otras cosas se puede ver que su fórmula genérica es $.ajax( url [, settings] ). En un entorno sin uso de WordPress el url que hay que indicar, normalmente se corresponde con un fichero de tipo php en el lado del servidor que por ejemplo hace una consulta a la base de datos y devuelve una respuesta dirigida hacia al navegador. Este es el fichero que no encontraba mi hoja html. Veamos a continuación cómo solventé este problema, y la solución, como casi siempre pasa por incluir código en el fichero functions.php de nuestro theme, veamos cómo.

A continuación hago un copy-paste del código que finalmente he utilizado, en mi fichero de tipo .js,es decir de código javascript.

jQuery.ajax({
   type: "POST",
    url: "/wp-admin/admin-ajax.php", 
    data: {'action':'guias','ciudad':indice},
    success: function(msg){
    	/*alert(msg);*/
        $('#guias1').append(msg);
    },
    error: function(msg){
        console.log(msg.statusText);
    }
 });

Como podéis ver, en la url que figura en la línea 3, ahora hacemos referencia a un fichero php que viene en la parte de administración de WordPress y que debe ser siempre el mismo. Debemos prestar especial atención en el apartado data que contiene un array con los parámetros ( en este caso de tipo POST que se pasan al servidor), pero hay uno que es esencial y que se denomina action (1) que en nuestro caso tiene un valor de “guias”, quedaros con este inciso, pues es muy importante para enlazar con lo que incluimos en el fichero functions.php y que comentaremos más adelante.

En el fichero functions.php del theme que estoy utilizando he puesto las siguintes instrucciones:

function guias(){
	global $wpdb;
	$ciudad=$wpdb-&gt;get_row($wpdb-&gt;prepare("select * from wp_ciudad where id='$_POST[ciudad]'"));
	$guias=$wpdb-&gt;get_results($wpdb-&gt;prepare("select * from wp_guia where ciudad_id='$_POST[ciudad]' "));
	$html= "<div class="puertos3"> <div class="puertos2">".$ciudad-&gt;ciudad."</div>";
	foreach ($guias as $guia) {
		$html=$html."<a href='void(0);'>html','miventana');return false \"&gt;". $guia-&gt;tag."</a></br>";
	}
	echo $html."</br></div>";
die();	
}
add_action('wp_ajax_guias', 'guias');
add_action('wp_ajax_nopriv_guias', 'guias');

Se han numerado las líneas para una mejor comprensión y exposición. Hay que matizar que he utilizado la variable global $wpdb que define WordPress y que permite enlazar de una forma cómoda con la base de datos mysql. Como puede verse, el núcleo central de todo esto está en la función denominada guias(), que se encarga de entresacar de la base de datos la información que queremos y devolverla en la línea 9 a través de la instrucción echo. Pero ¿cómo enlazamos esta función con la petición que hemos hecho?. La clave está en la linea 12, en la que la función add_action tiene dos argumentos:

  • wp_ajax_guias : La parte inicial wp_ajax_ es fija, pero la final, en este caso “guias” debe concordar con el parámetro action al que nos hemos referido como muy importante en el párrafo anterior, y que hemos hecho una llamada de atención con (1).
  • El segundo argumento es el nombre de la función que se ha definido anteriormente, y que en nuestro caso la hemos denominado guias

Cuidado, es muy importante añadir la línea 10 que define la instrucción php die();

Bien ya tenemos casi todas las piezas del puzle montadas, hemos conseguido hacer la llama ajax al servidor, éste la ha procesado y ha generado la respuesta, lo único que nos queda es colocar esta respuesta en nuestra página web. El enlace de todo esto nos lo dan las líneas 5 y 7 del primer código que hemos colocado antes y que reproducimos de nuevo a continuación:

success: function(msg){
    	/*alert(msg);*/
        $('#guias1').append(msg);
    },

Que como bien puede comprenderse, lo que se dice es que si la respuesta del servidor es correcta, se añade al contenido de una etiqueta que tiene por id=”guias1″ el mensaje devuelto por el servidor.

Espero con este post resolver todas las dudas que se os puedan presentar en la aplicación de los enriquecedores métodos ajax que ofrece jQuery dentro de WordPress, pues la verdad que son unas herramientas muy interesantes.

Modo “Lector” en WordPress

modo lector safari

Si usas el navegador Safari de Apple ya sabes de lo que te estoy hablando. Me refiero al “modo Lector” de este navegador, un icono que aparece en la barra de navegación y que te permite visualizar la página que estés visitando sin todo lo que sobra (anuncios, cabecera, etc). Solo ves el contenido del artículo, con sus imágenes y demás pero sin resto de elementos de la web.

Pues bien, la buena noticia es que podemos añadir este modo lectura para nuestros lectores aunque no usen el navegador Safari, como una funcionalidad extra en nuestro WordPress, que será muy apreciada por los visitantes.

El proceso no es tan sencillo como instalar un plugin y ya, pero el resultado merece la pena, dando a tu web una funcionalidad muy profesional.

¡Vamos a ello!

1. La solución

Vamos a conseguir añadir el modo lector gracias a un plugin para jQuery llamado Colorbox. Lógicamente, el primer paso es descargarlo del sitio oficial.

La versión actual de Colorbox es la 1.3.19, que funciona con jQuery 1.4.3+ en Firefox, Safari, Chrome, Internet Explorer 6, 7, 8, 9, Opera 11. Si quieres compatibilidad superior con navegadores más viejos puedes usar la versión anterior del plugin, que también está disponible en la web oficial.

2. Instalando Colorbox

Lo primero de todo es descargar la última versión (enlace directo aquí). Una vez descargado el zip lo descomprimes y verás el contenido, este:

carpetas colorbox

Hay varias carpetas de ejemplos, que contienen distintos estilos que puedes usar para el enlace del “modo Lector“. Si quieres decidirte abre cada carpeta de ejemplo y abre el archivo index.html de cada una para ver como se vería el modo lector.

Una vez decidido ya podemos ponernos a subir el plugin a nuestro servidor por FTP. La idea es esta:

  1. Copia el archivo jquery.colorbox-min.js de la carpeta llamada “colorbox” en el directorio ‘/js/‘ de tu tema (si no existe lo creas).
  2. Elige uno de los estilos de ejemplo y copia el archivo colorbox.css en el directorio de tu tema.
  3. En la misma carpeta de ejemplo, copia todos los archivos de la carpeta ‘/images/‘ en el directorio de imágenes de tu tema.

Si por algún motivo prefieres crear una carpeta llamada ‘colorbox‘ en el directorio de tu tema, y poner ahí todos esos archivos, puedes hacerlo, pero en esta guía los pasos están referidos a la estructura de carpetas del tema TwentyEleven.

3. Conectar el script con WordPress

Una vez hecho lo anterior hay que decirle a WordPress, y en concreto a tu tema, donde está Colorbox y como utilizarlo.

Para ello abrimos el fichero functions.php de tu tema (si no existe lo creas) y le añadimos lo siguiente antes del cierre del mismo (antes de la tag de cierre de PHP ‘?>‘):

**
 * Conectando el script y estilos del modo Lector.
 */
function pbd_rm_scripts() {
	if(is_single() ) :
		wp_enqueue_script(
			'colorbox',
			get_bloginfo('template_directory') . '/js/jquery.colorbox-min.js',
			array('jquery'),
			'1.3.19',
			true
		);
 
		wp_enqueue_script(
			'pbd-reading-mode',
			get_bloginfo('template_directory') . '/js/aw-reading-mode.js',
			array('jquery', 'colorbox'),
			'0.1',
			true
		);
 
		wp_enqueue_style(
			'colorbox',
			get_bloginfo('template_directory') . '/colorbox.css',
			array(),
			'1.3.19'
		);
	endif;
}
add_action('wp_enqueue_scripts', 'aw_rm_scripts');

Gracias a estas líneas de código, el tema sabrá donde está cada archivo de Colorbox y el JavaScript del “modo Lector” que vamos a crear a continuación. Una vez guardados ya estará listo para cargarlos en el sitio (solo en las páginas de entrada sencilla, o “single“).

Te recuerdo, como puedes ver en las rutas utilizadas, que estoy usando la configuración por defecto; poniendo el script en la carpeta /js/.

4. Definimos qué es el contenido

Para que el script sepa que es lo que tiene que mostrar en el “modo Lector” es conveniente marcarlo claramente. Para ello haremos una división alrededor del contenido con un div.

Me dirás que ya suele estar “rodeado” el “content” con un “div” pero es mejor crearlo “ex profeso” para tenerlo controlado y bien especificado.

Para ello, vamos de nuevo al archivo functions.php de tu tema y le añadimos esto otro:

**
 * En los posts envuelve el contenido en un div.
 */
function pbd_rm_content_filter($content) {
	if(is_single() ) {
		$content = '<div class="rm-content">'. $content .'</div>';
	}
 
	return $content;
}
add_filter('the_content', 'aw_rm_content_filter');

Este filtro se ejecutará cada vez que tu tema muestre el contenido de una entrada. Si el usuario está en una página de entrada sencilla el código envuelve el contenido con un div y la clase .rm-content a su alrededor.

5. Creamos el enlace para el “modo Lector”

Una vez tenemos toda la infraestructura creada ya estás listo para poner un enlace al “modo Lector“.

Para ello vamos al directorio /js/ del tema y creamos un nuevo archivo al que llamaremos ‘aw-reading-mode.js (si te fijas en el primer código ya preparamos la “llamada” a este archivo.

Pues nada, creado el archivo pegamos este código en el mismo:

jQuery(document).ready(function($) {
	// Esto es el selector CSS del elemento que envuelve el contenido de la entrada.
	// por ejemplo: .entry o .entry-content
	var selector = '.rm-content';
 
	// El HTML para el enlace "Ver esta entrada en modo Lector".
	var html = '<p class="rm-button">Ver esta entrada en <a href="#" class="reading-mode" rel="nofollow"><strong>modo Lector</strong></a>.</p>';
 
	$(selector)
		.prepend(html)
		.find('.reading-mode')
		.colorbox({
			innerHeight: "80%",
			innerWidth: 700,
			inline: true,
			href: selector
		});
});

Repasando un poco el código, verás que en la línea 4 establecemos el selector para el elemento que envuelve la entrada (en realidad no es necesario si usas el filtro del paso 4), y en la línea 7 está el HTML que se mostrará para el enlace al “modo Lector“, que por supuesto puedes personalizar a tu gusto.

Luego, la línea 10 añade ese HTML al elemento que envuelve al contenido (o sea, crea el enlace). Y en la línea 12 iniciamos Colorbox con las opciones de tamaño, especificando su contenido como el elemento envuelto. Hay más posibilidades, muy bien explicadas en la web oficial de Colorbox.

6. Dando estilo

Con todo lo anterior ya podemos usarlo y hacer pruebas, pero nunca está de más aplicar algo de estilo a nuestro “modo Lector“, poniendo el énfasis en todo caso en la legibilidad y facilidad de lectura, que de eso se trata, y no de hacer virguerías y poner colorines, no se trata de eso como comprenderás.

Un ejemplo de estilo, que queda muy bien, sería este:

/**
 * Modo lector
 */
#cboxLoadedContent > div {
	text-align: left;
	padding: 20px;
	font: 16px/24px Georgia, serif;
	width: 90%;
}
 
#cboxLoadedContent > div .rm-button {
	display: none;
}
 
#cboxLoadedContent > div p {
	margin-bottom: 24px;
}
 
#cboxLoadedContent > div h2 {
	font-size: 22px;
	margin-bottom: 24px;
}
 
#cboxLoadedContent > div h3 {
	font-size: 18px;
	margin-bottom: 24px;
}
 
#cboxLoadedContent > div h4 {
	font-size: 16px;
	margin-bottom: 24px;
}

Unas notas sobre este CSS:

  • El div #cboxLoadedContent se usa para ajustar el elemento que envuelve al contenido. Puedes hacerlo más flexible especificando un nombre de clase CSS si lo prefieres.
  • La línea 11 se usa para evitar que el enlace al “modo Lector” aparezca dentro de la ventana emergente
  • Si quieres usar los estilos existentes de tu tema puedes saltarte el filtro y, en su lugar, especificar un elemento como .entry-content en el JavaScript. Este elemento se moverá a la ventana emergente, de manera que sus estilos también se aplicarán a la ventana emergente.

Y ya está. Acojona un poco pero en realidad es sencillo, y siguiendo estos sencillos pasos podrás comprobar que funciona de coña, no ralentiza tu sitio (Colorbox solo son 10Kb de script, 5kb con gzip) y ofrece un toque de calidad y profesionalidad a tu web, para los visitantes que no usen el navegador Safari, que ya tiene esta utilidad integrada, como sabes.

(…) Plus: con plugins

Como no podía ser de otro modo, también hay plugins que ofrecen esta funcionalidad, y gracias a Quique que me lo ha recordado en los comentarios aquí tienes unos cuantos que tienen muy buena pinta:

  • Readability: Simple y efectivo, ofrece la ventana emergente de modo Lector fácil
  • Readability plugin: este es algo distinto, pues ofrece una especie de lista de lectura, ideal para vistas cansadas.
  • Easy reader: muy fácil de configurar, ofrece un botón para insertar en entradas y páginas y así ofrece el modo de lectura fácil.

Ahora ya, por opciones que no quede.

Contador de caracteres en el extracto

El extracto, en terminología web o específica de WordPress, es una porción del texto de una publicación que puede ser mostrado en la web en vez de todo el contenido. Algo así como lo que sería la “entradilla” en el mundo periodístico, ese pequeño resumen de lo que se encontrará que debe tener como misión básica animar a seguir leyendo el resto del contenido.

La mayoría de los temas WordPress soportan extractos, con lo que al webmaster solo le queda saber si quiere mostrar en su sitio el contenido o el extracto, y para ello en el editor de entradas de WordPress hay un widget así llamado para especificar el texto a mostrar como extracto.

Si no definimos ningún texto en ese campo vacío el tema mostrará lo primero que encuentre en el texto, lo que no siempre es la mejor elección por varios motivos, a saber:

  • No siempre el primer párrafo de un artículo es el acicate ideal para animar a leer el resto del mismo, salvo que se tenga este objetivo en mente
  • Lo más seguro es que el tema corte el extracto en el límite de caracteres predefinido, dificultando la comprensión del extracto y limitando su valor para animar a seguir leyendo
  • A falta de otra cosa, Google usa los extractos como descripción de la entrada en el snippet, por lo que una elección al azar no siempre ayudará a posicionar mejor ni a ser la mejor elección en el buscador

Estas son – creo – razones suficientes para acostumbrarse a usar siempre el extracto en WordPress, teniendo en cuenta sus muchas virtudes, y también tiene mucho sentido añadirle una funcionalidad que nos ayude a controlar los extractos con dos objetivos:

  1. Que la longitud de caracteres se adapte a los que mostrará el tema WordPress
  2. Que la longitud de caracteres se adapte a los que mostrará el snippet de Google (160 máximo)

Así que si estás convencido de la importancia de controlar los extractos, y quieres añadir un contador de caracteres, solo tendrás que añadir este código basado en jQuery a tu plugin de funciones o archivo functions.php de tu tema activo:

//Contador de caracteres en extracto
function excerpt_count_js(){
      echo '<script>jQuery(document).ready(function(){
jQuery("#postexcerpt .handlediv").after("<div style=\"position:absolute;top:0px;right:5px;color:#666;\"><small>Longitud del extracto: </small><input type=\"text\" value=\"0\" maxlength=\"3\" size=\"3\" id=\"excerpt_counter\" readonly=\"\" style=\"background:#fff;\"> <small>caracter(es).</small></div>");
     jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
     jQuery("#excerpt").keyup( function() {
     jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
   });
});</script>';
}
add_action( 'admin_head-post.php', 'excerpt_count_js');
add_action( 'admin_head-post-new.php', 'excerpt_count_js');

Una vez guardes los cambios ya tendrás un campo más en el widget de Extracto del editor de entradas de WordPress que contará los caracteres del texto del extracto incluido en el mismo a medida que vas escribiendo, permitiéndote controlar la longitud del mismo y, en consecuencia, posibilidades que he explicado antes.

Scroll infinito en WordPress

Si eres usuario de redes sociales como Twitter o Facebook, incluso si estás acostumbrado a navegar por Google Imágenes, ya sabes de lo que estoy hablando cuando decimos scroll infinito.

Es esa cualidad por la que no tienes que ir haciendo clic a enlaces del tipo de “página siguiente” sino que cuando llegas a bajo de una web esta se va extendiendo, mostrando más contenido, hasta el infinito (bueno, en realidad hasta que se acabe el contenido de tu web).

Pues bien, también podemos ofrecer este tipo de navegación de scroll infinito en WordPress.

Hay un plugin, Infinite-Scroll, basado en jQuery, que nos ofrece exactamente esto. Solo hay que instalarlo y activarlo y ya tenemos scroll infinito en nuestro WordPress.

scroll infinito wordpress

¿Lo mejor?

  • Ofreces un estilo de navegación a la que cada vez está más acostumbrada la gente que, actualmente, vive en las redes sociales, revitalizando tu WordPress
  • Más tiempo de permanencia en tu página, que ya sabes lo que a la peña le cuesta hacer clic
  • Acceso más rápido a tus entradas, lo que te dará más visualizaciones de tu contenido
  • Funciona sin ajustes en la mayoría de temas (en todos los que yo he probado) y sin tener que añadir código alguno
  • Es muy fácil de personalizar mediante la página de ajustes del plugin. Eso si, pásate, porque los ajustes por defecto solo muestran el scroll infinito a los admin.
  • ¡Mola!

scroll infinito wordpress ajustes

¿Pegas?

Pues también hay alguna:

  • No ves el footer prácticamente, salvo unos microsegundos mientras carga el siguiente bloque automáticamente
  • No hay manera de cancelar el scroll y volver al método tradicional como visitante. Acuérdate de incluir un buscador, navegador por fechas, categorías y esas cosas en la barra lateral para los impacientes.
  • Si el visitante no tiene Javascript activado en su navegador no lo verá
  • La memoria del navegador crece, pues tiene que renderizar MUCHO contenido en una sola ventana

Por lo demás es genial. Si quieres verlo en funcionamiento lo puedes probar en mi backup de Twitter en @fernandot backup.

Carga las imágenes sólo al hacer scroll para acelerar WordPress

Seguro que mas de una vez te pasa, que accedes a un blog que usa muchas imágenes, como este habitualmente, y la carga de la página es lenta.

Esto es debido a que la página trata de cargar todas las imágenes disponibles, y esto hace que, aunque aún no vayas a verlas – haciendo scroll – no puedas visualizar bien la primera publicación hasta que no se carguen todas.

Quizás hayas visto que sitios como Google Imágenes usan un script que trabaja para evitar precisamente eso. Lo que hace ese script es ir cargando las imágenes a medida que haces scroll, de manera que puedas visualizar las primeras imágenes y solo se cargan las demás si de verdad quieres verlas.

Pues bien, la gente de Automattic, Techcrunch y Jake Goldman se pusieron manos a la obra y, resultado de su trabajo tenemos el plugin Lazy Load que consigue precisamente eso, que las imágenes se carguen a medida que el visitante haga scroll, cargando solo las necesarias que visualiza en su navegador y, en consecuencia, mejorando la experiencia de navegación en tu web, por velocidad de carga, por simple gestión eficaz de los recursos.

Además, que no tienes que configurar nada, lo instalas, lo activas y empieza a funcionar, usando jQuery.sonar para mostrar imágenes a medida que están en el foco de visualización del navegador del usuario. El resto de contenido, no obstante, se carga al completo, por si te quedaba la duda.

¿Ventajas?, pues todas, especialmente en blogs con mucho uso de imágenes, pues mejoras los tiempos de carga de página y eso Google es posible que te lo agradezca, y lo que es seguro es que tus visitantes te lo agradecerán.

Si quieres ver el efecto puedes comprobarlo en mi blog personal.

WordPress 3.3: Lista de cambios que todo desarrollador debe revisar

nuevo wordpress33

En la siguiente lista, elaborada por Andrew Nacin, tienes una gran recopilación de los cambios más importantes que WordPress 3.3 ha introducido y que ningún desarrollador debe dejar pasar sin echarles un vistazo.

Espero te sirvan de ayuda, hay muchos cambios, y buenos, en todas las novedades de WordPress 3.3.

  • Cambios de la API de la barra de admin en WordPress 3.3. Un vistazo a los cambios que pueden romper tu plugin, y como se ha adaptado la terminología y las APIs en WordPress 3.3, el nuevo concepto de Grupos y como mover y modificar elementos de menú.
  • Cambios en Javascript y el editor. Aquí hay un buen montón de cambios. jQuery se ha actualizado a la versión 1.7.1, la versión actual. Ahora se incluye la interfaz de usuario completa de jQuery, y se ha actualizado a la versión 1.8.16, también la última versión. Tienes un ejemplo en wp_editor(), que seguro que va a gustar. La API QuickTags (los botones de la barra de herramientas del editor HTML) se ha reescrito completamente, y se han mejorado wp_localize_script() y wp_enqueue_script().
  • Nueva API: is_main_query(). Esta función y el método WP_Query se introdujeron durante WordCampo Portland, el pasado mes de Septiembre.
  • No incluir wp-admin/includes/template.php para obtener add_meta_box(). Al empezar el desarrollo de WordPress 3.3 se encontraron algunos plugins que hacían fatal la llamada a add_meta_box(), así sue no te pierdas este enlace.
  • Ya no existe el filtro admin_user_info_links. Esto ha sido obligatorio prácticamente, al combinar la barra de admin con la cabecera de admin. No es que lo usaran muchos plugins pero había que hacerlo.
  • Cambios en la API de Ayuda y pantalla. Aquí verás el proceso de añadir nuevas pestañas de ayuda, así como también cómo usar el objeto “pantalla” para determinar el contexto de la página actual. .

Limitador de caracteres en comentarios

En estos tiempos en que nos están acostumbrando a limitar lo que escribimos en la red, en concreto en Twitter, igual no se le hace tan raro a nuestros visitantes un contador de caracteres en los comentarios ¿no crees?.

Si eres de los que reciben auténticas parrafadas infumables en los comentarios de tu sitio igual este código Javascript, que limita los caracteres por comentario, te viene de perlas. Además incluye un contador de caracteres para que vean lo que les queda …

jQuery(function($) {
	// Configuración. Pon en comment_limit_chars el número de caracteres máximo
	var comment_input = $( '#commentform textarea' );
	var submit_button = $( '#commentform .form-submit' );
	var comment_limit_chars = 140;
	// deja de hacer modificaciones aquí

	// display how many characters are left
	$( '<div class="comment_limit_info"><span>' + comment_limit_chars + '</span> characters left</div>' ).insertAfter( comment_input );

	comment_input.bind( 'keyup', function() {
		// calculamos cuantos caracteres quedan
		var comment_length = $(this).val().length;
		var chars_left = comment_limit_chars - comment_length;

		// mostramos los caracteres que quedan
		$( '.comment_limit_info span' ).html( chars_left );

		// oculta el botón de envier si se ha sobrepasado el límite de caracteres
		if (submit_button)
			( chars_left < 0 ) ? submit_button.hide() : submit_button.show();
	});
});

El código inserta automáticamente una tag div en el campo de texto y actualiza el contador de comentarios a medida que escribe el usuario. El botón submit_button es opcional. Otro valor que puedes (debes) cambiar es el de comment_limit_chars, que en el ejemplo viene limitado a 140, como en Twitter.

Código ofrecido por Eric Teubert de www.satoripress.com a WP Engineer.