Cómo crear un loop WordPress perfecto

WordPress-loop

El Loop es la madre del cordero de WordPress, lo que hace que todo funcione y la magia ocurra, es lo más. Todo lo demás es opcional, sin Loop da igual que escribas, que subas fotos o instales veinte mil plugins, no se mostrará nada.

Porque el Loop es lo que hace que tus publicaciones existan y se muestren en tu web.

Así que más vale que tomes nota de cómo debería ser un Loop, o al menos aprendas cuales son sus partes fundamentales y para qué sirven, lo que es el objetivo de este artículo, que tampoco estarías leyendo si no fuera gracias al Loop.

Toma nota, vamos a ver de qué se compone el Loop

El loop de WordPress

1. Abriendo el Loop

Antes de mostrar las entradas tienes que abrir el Loop. Sería así:

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>

Observa que antes de que empiece el Loop primero revisamos a ver si hay entradas. El if(have_posts()) comprueba si hay entradas disponibles. Y si las hay entonces giramos a través de ellas (utilizo el término “girar” porque en realidad el término “loop” se refiere a eso, a girar, circular, dar vueltas en torno a algo).

Donde empieza de verdad el Loop es en while(have_posts()). Ahí comienza un ciclo continuo, orbitando a través de cada entrada disponible para mostrarse en la web.

Luego tenemos the_post(), que reclama información acerca de la entrada que tengamos, y establece la variable global $post.

Y todo esto en solo la primera línea de código ¿te das cuenta de que esto es la leche?

2. Mostrando la entrada

El siguiente paso es una sola línea de código, a la que normalmente nos referiremos cómo “el div de la entrada”. Lo que hace es envolver el contenido de nuestra entrada en un “div” para tenerlo todo junto y ordenado.

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

El ID de la entrada lo obtenemos con the_ID() ya que es una variable constante pues no hay dos entradas con el mismo ID.

post_class() es una función que ofrece clases específicas para las entradas que podemos usar en la hoja de estilos. Es genial pues nos permite mostrar entradas con tags y categorías específicas, para diferenciarlas de otras entradas.

3. El título de la entrada

Hay varias maneras de generar el código para el título de la entrada, pero este es muy popular además de efectivo.

<?php the_title('<h2 class="entry-title"><a href="' . get_permalink() . '" title="' . the_title_attribute('echo=0') . '" rel="bookmark">', '</a></h2>'); ?>

Para empezar, the_title() es la tag de plantilla WordPress para mostrar el título de la entrada, así de simple. Tiene tres parámetros opcionales: before (antes del título), after (después del título) y display (para mostrarlo o recuperarlo para usarlo en una función).

La tag de plantilla get_permalink() es la que obtiene la URL de la entrada, o sea, el enlace permanente a la entrada.

Y the_title_attribute() es una tag de plantilla que no se usa mucho, pero que tiene su miga. Y es que cuando pongas un título de entrada en el atributo “title” de un enlace, en vez de usar the_title() es mejor que uses the_title_attribute(). Con ello evitas errores de entradas con elementos problemáticos, cómo comillas y cosas así, ofreciendo un XHTML válido.

También puedes usar single_post_title() para mostrar el título de una entrada en las plantillas single.php y page.php.

4. El “byline

El “byline” es un término utilizado en periodismo, para describir y mostrar el escritor de un artículo. Y cómo los blogs son, en esencia, periódicos o revistas, pues de ahí han adquirido ese término y adaptado a esta especie de periodismo ciudadano.

También puedes añadir una “dateline“, o línea con la fecha, pero siempre es interesante mostrar quien es el autor de una entrada, la fecha de publicación, e incluso un enlace para editarla, todo dentro del párrafo “byline“, antes del texto de la misma entrada.

Se haría así:

<p class="byline">
        <span class="author vcard"><?php the_author_posts_link(); ?></span> <span class="separador">|</span> 
        <abbr class="published" title="<?php the_time(__('l, j F, Y, G:i', 'ejemplo')); ?>"><?php the_time(__('j F, Y', 'ejemplo')); ?></abbr>
        <?php edit_post_link(__('Editar', 'ejemplo'), ' <span class="sep">|</span> <span class="edit">', '</span> '); ?>
</p>

La primera tag de plantilla de este código es the_author_posts_link(). Su función es mostrar un enlace a la página de archivo del autor. También puedes usar the_author, que solo mostrará el nombre del autor, sin enlace.

the_time() muestra cuando se publicó la entrada. Hay varios formatos posibles a la hora de mostrarlo. Un detalle, si te fijas, en el ejemplo se usa dos veces the_time(). Y es que el primero está colocado en un atributo de título abbr. Esto se hace así para que cuando el lector pase el cursor sobre la fecha vea una versión extendida, con más detalles, un efecto chulo.

edit_post_link() muestra un enlace para editar la entrada, que solo ve los usuarios conectados que tengan capacidad de editar entradas. Si se hace clic en el enlace se abre la entrada en el editor de WordPress.

5. Mostrando el contenido de la entrada

Hay dos maneras posibles para mostrar el contenido de la entrada: toda la entrada o el extracto (bueno, en realidad podrías pensar que son 3, pues también podrías mostrar solo el título, pero entonces ya no sería contenido ¿no?).

Siempre hay que mostrar el contenido completo en single.php y page.php, aunque hay un montón de temas que también usan este método en la portada, en index.php.

Sería así:

<div class="entry-content">
        <?php the_content(__('Sigue leyendo', 'ejemplo')); ?>
        <?php wp_link_pages('before=<p class="pages">' . __('Páginas:','ejemplo') . '&after=</p>'); ?>
</div>

Esta parte del Loop lleva su propio “div”. Esto es para dar una separación más clara y así permitir aplicar estilos de manera más sencilla y clara.

the_content() es lo que muestra toda la entrada, y poco más hay que decir a este respecto. Lo siguiente es el texto “Sigue leyendo”, que se mostrará en el enlace cuando el autor de una entrada corte el contenido con la tag < !- - more - - > en el editor de WordPress.

De igual modo, wp_link_pages() es la parte del código que, cuando el autor de una entrada use la tag < !- - nextpage- - > partirá las entradas en más de una página, mostrando los enlaces a cada página. Lamentablemente esta es una técnica, y código, cada vez menos utilizada, pero muy recomendable.

Para terminar, si solo quieres mostrar el extracto de la entrada, solo hay que hacer un pequeño cambio. Esto es muy útil para las plantillas de los archivos, cómo category.php, archives.php y search.php, y cada vez se usa más en todo tipo de temas WordPress, especialmente en los que imitan a diarios digitales, o aquellos que quieren mostrar muchas entradas en portada.

El código sería así:

<div class="entry-summary">
        <?php the_excerpt(); ?>
</div>

Por defecto mostrará las 55 primeras palabras de una entrada, o el texto que introduzcas en el caja denominada “Extracto” del editor de WordPress.

6. Mostrando los metadatos de la entrada

Una vez hemos mostrado el contenido de la entrada es bastante habitual mostrar los metadatos de la misma, o sea, información adicional relativa a la entrada, cómo en qué categorías y tags está archivada, o el enlace a los comentarios. También puedes, si quieres, poner aquí el “byline”, combinado con los metadatos, antes o después, cómo quieras.

Un código muy típico para esta parte sería así:

<p class="entry-meta">
        <span class="categories"><?php _e('Publicado en', 'ejemplo'); ?> <?php the_category(', '); ?></span>
        <?php the_tags('<span class="tags"> <span class="sep">|</span> ' . __('Tags:', 'ejemplo') . ' ', ', ', '</span>'); ?> 
        <span class="separador">|</span> <?php comments_popup_link(__('Deja una respuesta', 'ejemplo'), __('1 respuesta', 'ejemplo'), __('% respuestas', 'ejemplo'), 'comments-link', __('Comentarios cerrados', 'ejemplo')); ?> 
</p>

Cómo puedes imaginar, the_category() muestra las categorías de la entrada.

A continuación, the_tags() muestra las tags, y si te fijas el modo de codificarlo es algo distinto a las categorías. Esto se hace así para asegurarnos que las tags – o lo que sea – solo se muestre si la entrada las usa. De este modo se evita que si no usas tags aparezca un texto vacío “Tags:“. No hace falta para las categorías porque siempre hay, aunque sea solo la categoría por defecto.

La última parte de los metadatos que mostramos es un enlace a los comentarios de la entrada. La tag de plantilla utilizada en el ejemplo es comments_popup_link(). Es importante usarla así ya que sirve para dos propósitos: enlaza a una ventana emergente para los usuarios que usen comentarios emergentes o enlaza a los comentarios de la entrada para los que no usen comentarios emergentes.

Nota: esto no funciona en single.php o page.php ya que ya estás en la página con la lista de comentarios.

7. Cerrando el Loop

El trabajo duro ya está hecho. Ahora solo quedan los cierres para que todo funcione correctamente. También debemos mostrar un mensaje cuando no haya entradas, aunque solo sea cómo medida de cortesía.

Conseguimos todo de este modo:

 </div>

        <?php endwhile; ?>

<?php else : ?>

        <p class="no-posts"><?php _e('Lo siento, no hay entradas que se ajusten a lo que busca', 'ejemplo'); ?></p>

<?php endif; ?>

(Extra) Internacionalización

Si eres observador te habrás dado cuenta de que en varios momentos del código he puesto la palabra “ejemplo”, por ejemplo:

__('Páginas:','ejemplo')
_e('Lo siento, no hay entradas que se ajusten a lo que busca', 'ejemplo')

Esto es lo que se conoce cómo “localización” o “internacionalización, que es lo que permite que un tema esté listo para su traducción. Pero esto ya lo hemos visto en un artículo anterior donde expliqué cómo preparar un tema para traducción, así que damos por terminada la lección.

Espero hayas aprendido un poco, o al menos recordado conceptos.

Migrar de HTML a WordPress

html a wordpress

Aún hay muchas webs estáticas en HTML, quizás más de las recomendables, pues hasta no hace muchos años era el estándar que te ofrecían desarrolladores a lo largo y ancho del mundo.

La principal desventaja de tener una web estática en HTML es que el contenido es, eso mismo, estático, requiriendo la creación o modificación expresa del HTML para tener contenido nuevo, algo ya caduco y en desuso con la introducción de los sistemas de gestión de contenidos (CMS).

Si es tu caso, y tienes una web estática en HTML con un buen montón de páginas creadas no te apures pues es bastante fácil pasar contenido y diseño de HTML a WordPress. Vamos a ver los dos asuntos que tienes que abordar.

1. Convertir páginas HTML estático a WordPress

Hay un paso previo, y es instalar un WordPress donde acomodar tus páginas en HTML. Una vez lo tengas hay varias maneras de pasar de páginas HTML a entradas (o páginas) WordPress:

  1. Hacerlo a mano. Si no tienes muchas páginas no te compliques, simplemente copia y pega el texto de la página HTML en el editor de entradas de WordPress y publica.
  2. URL cloner sería otra opción, pues es un increíble plugin permite importar contenido de cualquier URL a WordPress.
  3. HTML Import, un sencillo plugin que, una vez activo, te ofrece una amplia página de ajustes para importar cualquier web HTML a WordPress. Es muy preciso y efectivo.
url cloner html import

2. Convertir el diseño HTML a WordPress

Mi consejo sería que no te compliques e instales uno de los miles de maravillosos temas WordPress que existen, pero si tienes algún cariño especial por un diseño HTML previo hay algunas cosas que debes saber.

2.1 Crea el tema WordPress

Lo primero es crear una carpeta y nombrarla con el nombre del tema que quieras. Luego hay que crear dos nuevos archivos, style.css e index.php, y colocarlos en esa carpeta. Son los únicos archivos que WordPress necesita, lo creas o no. Ahora copia y pega el código de tu archivo CSS original en el fichero style.css recién creado. Al principio añade lo siguiente:

/*
Theme Name: Remplaza esto con el nombre de tu tema.
Theme URI: La URL donde vas a ofrecer tu tema (si quieres)
Description: Una breve descripción.
Version: 1.0
Author: Tu nombre
Author URI: La URL de tu web personal o la que quieras.
*/

Estos comentarios identifican el tema cómo hecho para WordPress. Tu hoja de estilos ya estaría lista.

2.2 Descuartiza el HTML

Lo podría decir más finamente pero la realidad es que un tema WordPress es una especie de HTML descuartizado, o dicho más finamente, “deconstruido“. De paso, hay que incorporar las llamadas PHP que harán que el HTML se comunique con la base de datos, imprescindible en cualquier CMS para archivar la información dinámica del contenido.

Los temas WordPress son varios archivos PHP donde hay llamadas que reclaman el código del resto de archivos para mostrarlos en un orden determinado. La estructura básica de un tema WordPress sería: cabecera (header.php) que llama al bloque de contenido (index.php) y este a su vez a la barra lateral de recursos de navegación (sidebar.php) para, al final, cerrar con un pié de página informativo (footer.php).

WordPress, en vez de tener todo este código HTML en un solo archivo lo “descuartiza” en varios que se “llaman” entre ellos mediante PHP.

Así que, para empezar, debes ir a tu código HTML y añadir unas marcas en los 4 lugares principales donde planees hacer los cortes del código para estas 4 secciones principales. Por supuesto, esto asumiendo que tu diseño previo contiene esos elementos (cabecera, cuerpo, barra lateral y pié), sino adáptalo a lo que tengas.

Así que, siguiendo el ejemplo, crea 3 nuevos archivos: header.php, sidebar.php y footer.php, y sitúalos en la carpeta del tema que creaste antes.

Antes de ponernos revisa el código del fichero header.php del tema Twenty Ten que viene por defecto en toda instalación de WordPress. Observa el PHP utilizado entre las etiquetas . Copia este código en tu nuevo archivo header.php. Ahora abre el HTML original y copia el código marcado previamente para la cabecera (primera sección) en este archivo header.php, justo debajo de la sección . Guarda y cierra.

Ahora abre el archivo index.php que creaste al principio y copia la segunda sección de tu código HTML original que marcaste como tal antes. Guarda y cierra también.

Haremos lo mismo con las siguientes secciones en los nuevos ficheros sidebar.php y footer.php que crearemos.

2.3 Ajusta la maquinaria

Una vez hecho lo anterior tu código HTML original debería estar ya descuartizado en 4 archivos distintos (header.php, index.php, sidebar.php, footer.php). Así que ahora toca ponerlos a funcionar juntos usando unas líneas de PHP.

Abre el archivo index.php, que debería contener el HTML de la segunda sección de tu código original. Añade esta línea al principio de todo:

<?php get_header(); ?>

Ahora vamos al final de este mismo archivo y añadimos lo siguiente:

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Con estas tres líneas de código PHP estamos diciendo a WordPress que recupere y muestre tus archivos header.php, sidebar.php y footer.php dentro de tu archivo index.php.

Con esto tu código ya está en marcha y reconocido por WordPress, listo para mostrarlo adecuadamente. A partir de este momento si quieres cambiar algo en la barra lateral no hay que modificar el fichero index.php sino solo las pocas líneas de sidebar.php, por ejemplo. Tu diseño ya está “deconstruido“.

2.4 El Loop

El index.php ya está casi terminado. El paso final es insertar el contenido dinámico en el código. Para eso existe WordPress, y mediante PHP es muy fácil recuperarlo.

El Loop es la parte de un tema WordPress utilizada para llamar y mostrar las publicaciones dinámicas desde la base de datos donde están almacenadas.

Copia este código y pégalo en tu nuevo archivo index.php (dentro del div que estés usando para la parte del contenido):

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
  <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <div class="post-header">
        <div class="date"><?php the_time( 'j M y' ); ?></div>
        <h2><a href="<?php the_permalink(); ?>" rel="bookmark" title="Enlace permanente a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
        <div class="author"><?php the_author(); ?></div>
    </div><!--fin de cabecera de entrada-->
    <div class="entry clear">
        <?php if ( function_exists( 'add_theme_support' ) ) the_post_thumbnail(); ?>
        <?php the_content(); ?>
        <?php edit_post_link(); ?>
        <?php wp_link_pages(); ?>
    </div><!--end entry-->
    <div class="post-footer">
        <div class="comments"><?php comments_popup_link( 'Deje un comentario', '1 comentario', '% comentarios' ); ?></div>
    </div><!--end post footer-->
  </div><!--end post-->
<?php endwhile; /* rebobina o sigue si se han obtenido todas las entradas */ ?>
  <div class="navigation index">
    <div class="alignleft"><?php next_posts_link( 'Entradas anteriores' ); ?></div>
    <div class="alignright"><?php previous_posts_link( 'Entradas siguientes' ); ?></div>
  </div><!--fin navegación-->
<?php else : ?>
<?php endif; ?>

Esta es una versión básica del Loop. WordPress lo usará para mostrar tus publicaciones y comentarios.

2.5 Para finalizar

Sube la carpeta de tu tema por FTP dentro de la carpeta /wp-content/themes/ donde esté instalado WordPress, o desde el instalador de temas de WordPress.

Actívalo y ya tienes tu tema WordPress con el diseño previo. Debes tener en cuenta, eso si, que es una versión muy básica de un tema WordPress, que puedes ampliar hasta el infinito revisando las tags de plantilla en el Codex, la biblia de WordPress.

Y sino, pues lo que te decía antes, que te olvides de lo viejo e instales algún maravilloso tema. Estos son los que más me gustan a mi.

Añadir quicktags al editor de WordPress de manera sencilla

quicktags-wordpress

El editor HTML (texto) de WordPress ofrece una serie de botones, conocidos cómo quicktags que permiten dar formato a los textos de manera sencilla, pero en ocasiones los botones ofrecidos pueden ser limitados y necesitar uno especial.

Añadirlos es muy fácil.

Conlleva solo dos pasos, estos:

1. Crea el archivo que contiene las nuevas Quicktags

Crea donde quieras un fichero, que puedes denominar quicktags.js, y en el añade líneas cómo la siguiente por cada una de las quicktags que puedas querer utilizar actualmente o en un futuro.

edButtons[edButtons.length] = new edButton( 'id', 'Nombre del botón', '[mishortcode]', '[/mishortcode]', 'h', '-1');

La explicación del código, para que puedas personalizarlo sería este:

  • id define que se cree un identificador único para el nuevo botón
  • Nombre del botón es el texto que aparecerá en el botón
  • Lo siguiente es la tag HTML que añadirá tu botón, en el ejemplo un shortcode, con el formato de apertura y el de cierre.
  • h especifica una combinación de teclas de acceso rápido, en este caso sería Control+Alt+h
  • -1 define si el botón puede cerrarse o no

Una vez añadidas tantas líneas cómo botones puedas querer utilizar algún día guarda los cambios.

2. Crea la función para añadir quicktags

En tu plugin personal o archivo functions.php de tu tema activo añade algo así:

//Añadir quicktag
function mi_quicktag() {
	wp_enqueue_script( 'mishortcode', 'http://misitio.es/quicktags.js', array( 'quicktags' ) );
}

add_action( 'admin_print_scripts', 'mi_quicktag' );

Y vuelves a guardar los cambios.

Cómo podrás comprobar en el código lo verdaderamente relevante es definir claramente en la tercera línea el código al que llama y la ubicación del archivo donde están las quicktags.
añadir quicktag

¡Qué lo disfrutes!

Borrar código que sobra de los textarea en WordPress

aprende html

La tag HTML textarea es un modo estupendo de mostrar una lista larga de contenido sin que tu entrada se alargue hasta el infinito, pues restringe el contenido del texto contenido en la misma a una caja en la que tu defines el ancho y el largo de la misma. El problema es que añade códigos de sobra que seguro que no querrás mostrar.

O sea, que si introduces un textarea, digamos, así:

<textarea rows="10" cols="40">Aquí el texto larguísimo</textarea>

WordPress te muestra un truño de este estilo, con un montón de tags de párrafo (p), saltos de línea (br) y otros códigos HTML que no están en el texto original y que, por supuesto, no quieres que se vean

textarea sucio

textarea sucio

Si quieres solucionarlo es sencillo, solo tienes que añadir esto a tu plugin de funciones o archivo functions.php de tu tema activo, guardas los cambios y ya no tendrás más códigos sobrantes en tus textarea:

//Limpiar los textarea de br,p, y demás basura
function clean_textarea2($matches) {
	if ( is_array($matches) )
		$text = $matches[1] . $matches[2] . "</textarea>";
	else
		$text = $matches;

	$text = str_replace('<br />', '', $text);
	$text = str_replace('<p>', "\n", $text);
	$text = str_replace('</p>', '', $text);
	$text = str_replace('&#8220;', '"', $text);
	$text = str_replace('&#8221;', '"', $text);
	$text = str_replace('&#8216;', "'", $text);
	$text = str_replace('&#8217;', "'", $text);
	$text = str_replace('&#8242;', "'", $text);

	return $text;
}
function clean_textarea($pee, $br = 1) {
	if (strpos($pee, '<textarea') !== false)
		$pee = preg_replace_callback('!(<textarea.*?>)(.*?)</textarea>!is', 'clean_textarea2', $pee );
	return $pee;
}

add_filter('the_content', 'clean_textarea');

Obtienes un textarea limpito de porquería …

textarea limpio

textarea limpio

Si sigues Ayuda WordPress y te has fijado bien en el código en realidad lo que estamos haciendo es una sustitución de texto mediante str_replace, de manera que cuando encuentra un elemento indeseado lo sustituye por un espacio en blanco, algo similar a lo que ya hemos hecho para, por ejemplo, cambiar el saludo de WordPress sin modificar la traducción, quitar HTML de los comentarios, sustituir unas palabras por otras (precioso y útil para muchas cosas) y otros muchos trucos que ya hemos visto.

Otra posibilidad es desactivar el wpautop a voluntad, o probar con el plugin PS disable auto formatting, pero personalmente me parece mejor el método anterior, y funciona siempre.

Añadir más tags HTML en los comentarios de WordPress

tags html

Por defecto, WordPress permite el uso de ciertas tags HTML en los comentarios, de manera que los visitantes puedan dar formato a sus comentarios y que sean más legibles.

Para cargar en tu plantilla las tags HTML permitidas solo tienes que añadir, si no lo tiene ya, el siguiente código al fichero comments.php, justo antes del formulario de comentarios, o al final si lo prefieres:

Puedes usar algo de HTML: <?php echo allowed_tags(); ?>

Con lo que se mostrarán las siguientes tags HTML que pueden usar tus visitantes:

Puedes usar algo de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i>
<q cite=""> <strike> <strong>

tags html comentarios wordpress

Ahora bien, si quieres puedes añadir más tags HTML para poder usarlas en los comentarios. Para lograrlo simplemente tienes que añadir algo de código a tu plugin de funciones o al archivo functions.php de tu tema activo, este:

// Función que permite más tags HTML en los comentarios
function mas_tags() {
  global $allowedtags;
  $allowedtags['pre'] = array('class'=>array());
$allowedtags["iframe"] = array(
 "src" => array(),
 "height" => array(),
 "width" => array());
$allowedtags["object"] = array(
 "height" => array(),
 "width" => array());
$allowedtags["param"] = array(
 "name" => array(),
 "value" => array());
$allowedtags["embed"] = array(
 "src" => array(),
 "type" => array(),
 "allowfullscreen" => array(),
 "allowscriptaccess" => array(),
 "height" => array(),
 "width" => array());
}

add_action('comment_post', 'mas_tags');

En el ejemplo anterior he añadido unas cuantas tags más. La primera es sencilla, pues añade la posibilidad de usar la tag pre, para que tus visitantes añadan código y se vea de manera distinta.

Las siguientes ya son más especialitas, pues ofrecerán la posibilidad de usar códigos iframe, embed, param y object, los necesarios para insertar códigos de YouTube y similares y, de este modo, que puedan compartir vídeos en los comentarios.

Por supuesto, puedes extender el truco a tus necesidades, de hecho deberías hacerlo.

Referencias:

  1. David Walsh
  2. Theos
  3. WP quick tips
  4. Kav design

Desactivar wpautop en WordPress

anillo tecla maquina escribir

Por si no lo sabías, y eso será síntoma de que no me lees, la función wpautop es la que sustituye los saltos de línea que introduces en un texto mediante el teclado en el editor de WordPress y los sustituye por tags HTML de salto de párrafo.

Esta funcionalidad, normalmente interesante, pues trata de generar un XHTML válido añadiendo las marcas de párrafo < p >…< / p > en ocasiones introduce espacios de más y a veces justo lo contrario, no añade los espacios extra que tu querrías tener en tu texto.

Pues bien, hace unos días vimos cómo desactivar los párrafos automáticos que genera mediante un sencillo código, pero hay un modo aún más controlado de hacerlo, decidiendo la desactivación de la función wpautop en cada entrada.

Si es tu caso entonces el plugin Toggle wpautop te va a resultar perfecto. Lo que hace una vez instalado es añadir una casilla a tu editor de WordPress, en la caja meta de publicación, mediante la cual puedes decidir en cada entrada si funcionará el wpautop o no, así de simple, controlado y efectivo.
desactivar wpautop

Desactivar párrafos automáticos en WordPress

Hamburguesa deliciosa

WordPress añade párrafos automáticamente a los textos cuando tecleas la tecla INTRO en un texto, o sea, que inserta la tag HTML que define que una parte de texto es un párrafo distinto del siguiente.

Este comportamiento, que facilita la vida del redactor la mayoría de las veces, no siempre es un amigo fiel, pues también puede insertar párrafos donde no desees.

Igual engorro puede suponer si eres un escritor exhaustivo que prefiere marcar por tu cuenta dónde hay salto de párrafo y donde no, no digamos cuando el CSS de tu tema también introduce espacios extra entre textos.

En definitiva, que en WordPress, si escribes algo así … 

Sed in lectus vitae nibh aliquam posuere. Nulla facilisi. Aenean tristique diam vitae mi dignissim aliquet bibendum nibh varius. Nulla a erat tortor, nec aliquam tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Duis tempus aliquet tempor. Cras eget velit in nulla tempus mollis sed non purus. Donec bibendum blandit eleifend. Praesent dapibus risus eget nunc facilisis varius. Proin velit arcu, feugiat interdum condimentum in, molestie at sapien. In in dui eget tortor volutpat dignissim. Nulla et ante massa, ut adipiscing quam. Curabitur pellentesque ante nibh. Cras luctus metus vel quam lobortis aliquam.

Donec quis lorem non enim tempus posuere. Suspendisse interdum quam in erat bibendum iaculis. Nulla feugiat massa orci, at iaculis tortor. Ut feugiat orci ornare nulla ornare mollis. Vivamus molestie est et nulla viverra tristique. Sed malesuada tristique lacus at consectetur. Nullam non tellus arcu, lobortis tincidunt elit. Mauris dignissim viverra vehicula. Mauris et dui est, quis sollicitudin lorem. Proin eu risus magna, sit amet blandit nisl. Donec ornare, leo sit amet semper tristique, risus augue cursus augue, vestibulum egestas libero erat et neque. Aliquam erat volutpat. Aenean ullamcorper dictum tristique. Etiam bibendum pulvinar pretium.

Le añade las tags de separación de párrafo, quedando de este modo:

<p>Sed in lectus vitae nibh aliquam posuere. Nulla facilisi. Aenean tristique diam vitae mi dignissim aliquet bibendum nibh varius. Nulla a erat tortor, nec aliquam tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Duis tempus aliquet tempor. Cras eget velit in nulla tempus mollis sed non purus. Donec bibendum blandit eleifend. Praesent dapibus risus eget nunc facilisis varius. Proin velit arcu, feugiat interdum condimentum in, molestie at sapien. In in dui eget tortor volutpat dignissim. Nulla et ante massa, ut adipiscing quam. Curabitur pellentesque ante nibh. Cras luctus metus vel quam lobortis aliquam.</p>

<p>Donec quis lorem non enim tempus posuere. Suspendisse interdum quam in erat bibendum iaculis. Nulla feugiat massa orci, at iaculis tortor. Ut feugiat orci ornare nulla ornare mollis. Vivamus molestie est et nulla viverra tristique. Sed malesuada tristique lacus at consectetur. Nullam non tellus arcu, lobortis tincidunt elit. Mauris dignissim viverra vehicula. Mauris et dui est, quis sollicitudin lorem. Proin eu risus magna, sit amet blandit nisl. Donec ornare, leo sit amet semper tristique, risus augue cursus augue, vestibulum egestas libero erat et neque. Aliquam erat volutpat. Aenean ullamcorper dictum tristique. Etiam bibendum pulvinar pretium.</p>

Lo que en ocasiones supone espacios extra adicionales en el texto, que no siempre es lo deseable.

Si quieres eliminar este comportamiento por defecto es bien sencillo. Simplemente añade el siguiente código a tu plugin de funciones:

//Eliminar párrafos automáticos por defecto
remove_filter('the_content', 'wpautop');

Guardas los cambios y ya lo tienes.

Estupendo truco encontrado en WPrecipes

Nuevo look de Blogpocket: minimalista, responsive y sin comentarios

No hay que engañarse: la plantilla o theme de un blog es importante pero no lo más importante. El aspecto anterior de Blogpocket (un theme de Genesis, framework que seguiremos conservando para el resto de blogs del Multisite), estaba muy bien pero penalizaba excesivamente el rendimiento general del blog.

Otra causa de la pesadez del blog son los plugins. Y es que si tienes un blog a dos columnas (el formato clásico, el más reconocible dentro de las diversas estructuras existentes) tienes que alimentarlo. La necesidad de integrar el blog con las redes sociales implica instalar plugins para ello. Y todo ello implica mayor lentitud en la carga de la página y mayor fuente de problemas.

Por otra parte, los themes vistosos son muy agradables a la vista pero enemigos de la accesibilidad y el rendimiento. El minimalismo trae consigo dos cuestiones fundamentales: mayor velocidad de carga y mejor experiencia para los usuarios.

El theme que vamos a probar en Blogpocket, a partir de hoy, es Pocket de Themeforest. Posee las siguientes características:

  • Minimalista: Funciones reducidas al mínimo, estructura simple y máxima legibilidad, con tipología y tamaño de fuentes agradables para leer.
  • HTML5: Pocket está desarrollado en HTML5, la última versión del lenguaje de etiquetas que trae mejoras importantes para la construcción de sitios Web y que proporciona mayor velocidad de ejecución. Acerca de todo esto, minid escribió un buen post a propósito de su nuevo cambio de look: El nuevo minid.net.
  • Responsive: Otra de las necesidades actuales es la de visualizarse bien en smartphones y tabletas. Pocket es responsive; es decir, se adapta automáticamente a cualquier tipo de pantalla: ordenador, teléfono móvil y tableta.

Sin comentarios

También seguiremos la tendencia moderna que consiste en la eliminación del sistema de comentarios. En la línea de minimizar el blog, eliminando todo lo superfluo, se prescinde de los comentarios, a partir de hoy. La base de datos estaba sobrecargada de spam, a pesar de Akismet, y no parece que merezca la pena mantener un sistema para muy poquitos comentarios. La conversación se ha trasladado a Twitter y Facebook y allí estaremos para dialogar y contestar a cualquier cuestión sobre lo publicado en el blog.

Minimalismo significa potenciar el contenido que, como todos sabemos, es el rey. Estoy convencido de que a la gente le da igual cuál sea el aspecto de tu blog, siempre y cuando se pueda leer claramente. El panorama de acceso a la información ha cambiado tanto desde 2001 que el principal origen de los lectores está en RSS y redes sociales, por lo menos para Blogpocket.

Aún recuerdo aquella corriente de bloggers, allá por la primera época, que defendían los blogs sin CSS; es decir, un blog de texto plano, puro y duro.

Al fin y al cabo, lo importante es el contenido.

AVISO IMPORTANTE: Cambia la configuracion de tu suscripcion a Blogpocket en tu agregador poniendo el feed nativo http://www.blogpocket.com/feed, ya que el de FeedBurner lo usaremos, como maximo, hasta el proximo 1 de Julio de 2013.

Suscribete tambien a Blogpocket.com por e-mail.

Editor completo para los extractos

Tengo que reconocer que he redescubierto hace relativamente poco mi amor por los extractos en WordPress. Es algo que casi no usaba pero que cada vez tengo más en cuenta en todos los sentidos.

Además, que son un elemento muy importante a tener en cuenta para el SEO de tu web.

Pero hoy no toca hablar de SEO sino de cómo embellecer esas porciones de nuestro contenido que se muestran en la portada de nuestra web, cuando el tema WordPress soporta la visualización de extractos en vez del texto completo de la entrada.

Y es que, por si no lo sabías, la pequeña cajita de tu editor para los extractos soporta HTML, y las tags de estilo, enlaces, etc que uses en la caja se mostrarán en la web. Pero ¿y si los usas mucho y quieres facilitarte la vida?.

Pues entonces podemos habilitar un editor, como el principal, un TinyMCE, pero también para esa cajita del extracto. Para lograrlo solo hay que añadir el siguiente código a tu plugin de funciones:

//Editor para los extractos
function tinymce_excerpt_js(){ ?>
        <script type="text/javascript">
                jQuery(document).ready( tinymce_excerpt );
                    function tinymce_excerpt() {
                        jQuery("#excerpt").addClass("mceEditor");
                        tinyMCE.execCommand("mceAddControl", false, "excerpt");
                        tinyMCE.onAddEditor.add(function(mgr,ed) {
                            if(ed.id=="excerpt"){
                                ed.settings.theme_advanced_buttons2 ="";
                                ed.settings.theme_advanced_buttons1 = "bold,italic,underline,seperator,justifyleft,justifycenter,justifyright,separator,link,unlink,seperator,pastetext,pasteword,removeformat,seperator,undo,redo,seperator,spellchecker,";
                            }
                        });
                    }
        </script>
    <?php }
    add_action( 'admin_head-post.php', 'tinymce_excerpt_js');
    add_action( 'admin_head-post-new.php', 'tinymce_excerpt_js');
    function tinymce_css(){ ?>
        <style type='text/css'>
                    #postexcerpt .inside{margin:0;padding:0;background:#fff;}
                    #postexcerpt .inside p{padding:0px 0px 5px 10px;}
                    #postexcerpt #excerpteditorcontainer { border-style: solid; padding: 0; }
        </style>
    <?php }
    add_action( 'admin_head-post.php', 'tinymce_css');
    add_action( 'admin_head-post-new.php', 'tinymce_css');

    function prepareExcerptForEdit($e){
        return nl2br($e);
    }
    add_action( 'excerpt_edit_pre','prepareExcerptForEdit');

Lo que obtienes es un editor visual, con una línea de iconos para dar formato – y alegría – a tus extractos, incluso para añadir enlaces fácilmente y algunos detalles más. ¡Moola!

Luego, para rizar el rizo, le puedes añadir un contador de caracteres al extracto como ya vimos.

Ayuda WordPress está alojado en Gigas Cloud WordPress, hosting en la nube especializado en WordPress

Los 10 mandamientos del desarrollador WordPress

Ser desarrollador WordPress no requiere  unas habilidades especiales, distintas de las de programar en PHP o CSS, pero si hay consejos que pueden marcar diferencias y elaborar desarrollos sólidos y, sobre todo, sin problemas para el mismo o sus clientes.

Es por ello que he creído conveniente, por lo acertados que son los consejos, traducir esta lista elaborada por Floris P. Lof:

1. Siempre define WP_DEBUG a true durante el desarrollo

Ni te imaginas la cantidad de avisos de errores de código que vas a recibir de plugins y temas. Todos estos avisos de bajo nivel pueden provocar fallos de memoria, que reducirán el rendimiento del sitio al consumir más memoria de la necesaria. WP_DEBUG también es una herramienta muy útil para descubrir si estás usando funcionalidades obsoletas.

2. Atente a los estándares de código y CSS de WordPress

Los estándares de WordPress se han establecido tras años de experiencia. Si te atienes a estas reglas obtendrás un código limpio y fácilmente leible para ti y para otros. De ahí el slogan “el código es poesía”..

3. Comenta tu código

Tu código no solo debe ser fácil de leeer por otros sino que debes ser capaz de que el resto cualquiera entienda porqué elegiste escribir un código en tal o cual modo. Hay muchas maneras de vestir un santo, pero explica tu elección siguiendo las indicaciones del Codex.

4. Aprende como funciona el “core” de WordPress, lee las líneas de código reales

Deberías saber cómo fucniona WordPress internamente. ¿Cuando se cargan los plugins en mulsitisio?, ¿cuando se hacen peticiones a la base de datos?, ¿cuando se cargan los archivos de los temas? y todo eso. Puedes aprender un montón de leer el “core” de WordPress.

5. Usa las funciones y APIs internas de WordPress siempre que puedas

No reiventes la rueda, antes de escribir código aprende si hay una función o procedimiento que ya esté en el “core”. Aprende del “core”, como he apuntado antes, y descubre como funciona todo. Te sorprenderá todo lo que vas a encontrar ahí. Unos ejemplos serían estas funciones de utilidad.

6. Pon prenombre a tu código

Hay mucha gente que escribe código para WordPress en temas y plugins. Y es bastante posible que tu nombre de función, o clase de variable sea el mismo que use otra persona. Por ello deberías siempre ponerle prenombre, como tus iniciales o la de tu web. Por ejemplo (AW):

aw_nombredefuncion();

7. ¡Nunca te fíes de la acción del usuario! ¡Sanitiza & escape!

Esto es un problema importante, ahora y quizás siempre. WordPress se carga con herramientas que te permiten escribir sitios seguros. Una buena idea sería el  capítulo 6  de este libro. Ya lo tenías ¿no?

8. Usa nonces

Esto sería una extensión del mandamiento anteriior. Usar “nonces” asegura todas las funcionalidades que tus formularios necesitan. Revisa esta página del Codex

9. Localiza tu código

En Europa, al contrario que en América, estamos muy acostumbrados a escribir en varios idiomas, así que no es de sorprender que un cliente te pida que un tema o plugin esté disponible en otro idioma o dialecto.

Así que escribe tu código pensando en que sea “internacionalizable”. Esto hará que añadir otro idioma en el futuro sea más fácil.

10. Rendimiento, rendimiento, rendimiento

Hay que desarrollar sitios de alto rendimiento. En todo el código que escribas o incluyas, ya sea una petición a la base de datos, código PHP, HTML, CSS, JavaScript o adjuntos como imágenes, siempre ten en mente el rendimiento. Cada nanosegundo cuenta.

Ayuda WordPress está alojado en Gigas Cloud WordPress, hosting en la nube especializado en WordPress