Extractos en páginas WordPress

wordpress-cms
Cuando usas WordPress cómo lo que hasta hace poco se entendía que era un CMS, o sea, cuando usas WordPress de manera más estática, basado en una estructura de páginas, hay ocasiones en que se hace necesario mostrar un “loop” en el que las páginas también puedan tener extractos, igual que las entradas.

Un ejemplo claro es un tema WordPress que muestre por defecto páginas en portada, o situaciones en que quieras crear un loop especial que trabaje con páginas en vez de con entradas.

Pues es bien fácil, solo tienes que añadir el siguiente al fichero functions.php del tema o a tu plugin de utilidades:

//Extractos en páginas
function my_init() {
  add_post_type_support('page', array('excerpt'));
}
add_action('init', 'my_init');

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!

Plugin en un idioma diferente al de WordPress

poliglota

Hace algún tiempo que vimos cómo mostrar un tema WordPress en un idioma diferente al de la administración, el Escritorio de WordPress, pero hay ocasiones en que lo que necesitamos es hacer lo mismo, usar la versión en otro idioma pero de un plugin.

Digamos, por ejemplo, que usamos WordPress en español pero usamos un plugin que queremos que funcione en el sitio con los mensajes en inglés. Eso si, es fundamental que el plugin en cuestión esté preparado para localización y con el fichero de idioma correspondiente, lo que llamamos internacionalizado, tenlo en cuenta.

Pues bien, si tienes esa necesidad solo tendrías que añadir un código cómo el siguiente a tu plugin de funciones, o al archivo functions.php de tu tema:

//Plugin en otro idioma
function my_plugin_locale_filter($locale, $domain)
{
    if($domain === 'the_plugins_textdomain')
    {
        return 'en_US';
    }

    return $locale;
}
add_filter('plugin_locale', 'my_plugin_locale_filter', 10, 2);

La idea es intercambiar la llamada al load_plugin_textdomain con load_textdomain, donde tu apuntas al archivo en cuestión que quieras. Pero en este ejemplo lo que hacemos es una versión más limpia, usando el filtro plugin_locale, el cual te permite modificar la versión “local” usada por un plugin.

De todos modos si se te ocurre un modo mejor de hacerlo adelante, nos lo cuentas en los comentarios ¿ok?

Entradas relacionadas con miniatura sin plugins

guru del código

Las entradas relacionadas son un modo estupendo de atraer a tus lectores hacia otras publicaciones de temática similar, aumentando la fidelidad y permanencia en tu web de los visitantes, así que es un elemento fundamental y casi obligatorio en cualquier sitio.

Si le sumamos una atractiva miniatura de imagen que le de mayor visibilidad a las entradas relacionadas mejor que mejor ¿no?

Pues bien, cómo ya hemos visto en otras ocasiones cómo mostrar entradas relacionadas con código, o uno de los mejores plugins para mostrar entradas relacionadas con miniatura, hoy rizamos el rizo y unimos ambas posibilidades.

posts-relacionados-con-miniatura

Para mostrar entradas relacionadas con miniatura sin plugins hay 3 pasos fundamentales, a saber … 

1. Añadir soporte de miniaturas al tema

Esto ya lo hemos visto varias veces pero lo repasamos por si no lo has añadido ya. Para ello añade al fichero functions.php de tu tema la siguiente línea, con la que le añadimos soporte de miniaturas de entrada:

add_theme_support( 'post-thumbnails' );

Y además, siempre es conveniente definir los tamaños de miniatura adaptados lo mejor posible al diseño:

add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 100, 50, true );

A partir de ahí solo tienes que acordarte de que en cada entrada definas una “Imagen destacada” desde la “meta box” del editor así denominada.
imagen destacada

2. Añadir el código al loop

En el loop del archivo single.php debemos añadir el código que mostrará las entradas relacionadas. El sitio ideal sería antes de la llamada a los comentarios, que identificarás por el siguiente código:

<?php comments_template(); ?>

El código sería algo así:

<div class="relacionadas">
<h3>Entradas relacionadas</h3>
<?php
        $orig_post = $post;
        global $post;
        $tags = wp_get_post_tags($post->ID);
        
        if ($tags) {
        $tag_ids = array();
        foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
        $args=array(
        'tag__in' => $tag_ids,
        'post__not_in' => array($post->ID),
        'posts_per_page'=>4, // Número de entradas relacionadas a mostrar.
        'caller_get_posts'=>1
        );
        
        $my_query = new wp_query( $args );

        while( $my_query->have_posts() ) {
        $my_query->the_post();
        ?>
        
        <div class="miniaturarelacionada">
                <a rel="external" href="<? the_permalink()?>"><?php the_post_thumbnail(array(150,100)); ?><br />
                <?php the_title(); ?>
                </a>
        </div>
        
        <? }
        }
        $post = $orig_post;
        wp_reset_query();
        ?>
</div>

Básicamente, lo que hace el código anterior es identificar las tags en que está etiquetada la entrada actual para, a continuación, mostrar otras entradas etiquetadas con las mismas tags, excluyendo la entrada actual, que identifica por su ID único. en la línea 14 definimos el número de entradas a mostrar (en el ejemplo 4), que puedes cambiar a tu gusto.

3. Añadir estilos mediante CSS

Ahora bien, lo anterior no quedaría bonito ni atrayente si no creamos unas clases CSS adecuadas, que atraigan atención y coloquen las entradas relacionadas de manera ordenada.

Por tanto, y usando las mismas denominaciones de clases CSS de ejemplo usadas en el código previo, habría que crearlas en la hoja de estilos de tu tema activo, habitualmente el archivo style.css.

Lógicamente, es solo un ejemplo, y debes adaptarlo a los estilos generales de tu tema o tus gustos personales …

.relacionadas {width: 640px; margin: 0 0 20px 0; float: left; font-size: 12px;}
.relacionadas h3 {font-size: 20px; margin: 0 0 5px 0; }
.miniaturarelacionada {margin: 0 1px 0 1px; float: left; }
.miniaturarelacionada img {margin: 0 0 3px 0; padding: 0;}
.miniaturarelacionada a {color :#333; text-decoration: none; display:block; padding: 4px; width: 150px;}
.miniaturarelacionada a:hover {background-color: #ddd; color: #000;}

Lo que hace este CSS de ejemplo es mostrar las miniaturas con un ancho de 150 pixels, lo que significa que para un ancho del bloque principal de 640 pixels mostraría 4 entradas, márgenes incluidos. Por descontado que debes ajustar esto a tus necesidades, reduciendo el valor .miniaturarelacionada a 125 pixels si quieres 5 miniaturas, por poner un ejemplo. No digamos si el ancho del bloque de la entrada de tu tema WordPress es menor de 640 pixels.

También, y para terminar, es importante que definas el ancho de las miniaturas en los ajustes multimedia de WordPress al mismo tamaño especificado en el CSS que, además, debe coincidir con el tamaño definido en el código php en the_post_thumbnail(array(150,100).

Por lo demás funciona de maravilla, siempre y cuando etiquetes tus entradas claro, sino verás un feo espacio en blanco.

Redirige errores 404 a tu página principal

404

El SEO es un fastidio, no sé si estarás de acuerdo conmigo, pues resulta que no siempre es suficiente con escribir mucho y escribir buenos artículos originales, hay imponderables que pueden perjudicar tu web de cara a los buscadores, y los errores de página no encontrada, o 404, son uno de esos imponderables.

Vale que los temas WordPress suelen ofrecer una página 404 para que no sea un error puro y duro, y de paso ofrecer un buscador o lo que sea, pero a veces es más conveniente que todo error 404 se dirija a la portada de tu web, donde si hay contenido.

Si es el caso, y quieres hacer esta redirección, solo hay que añadir estas líneas al archivo .htaccess:

< IfModule mod_alias.c >
RedirectMatch 301 ^/search/$ http://miweb.es/
RedirectMatch 301 ^/tag/$ http://miweb.es/
RedirectMatch 301 ^/category/$ http://miweb.es/
< /IfModule >

Lo que hace es redirigir los 404 en búsquedas, tags o categorías a la página principal. Solo tienes que cambiar la URL de ejemplo por la tuya y guardar los cambios.

Crea aplicaciones web WordPress ¡sin tocar una línea de código!

Wp-App-Studio

De verdad, WordPress me sigue sorprendiendo día a día, pero sobre todo la comunidad de usuarios, que crean desarrollos que hacen que este CMS sea lo más grande que ha parido madre … y no exagero.

Un ejemplo glorioso de lo que digo (si, glorioso) es WP App Studio, un plugin – si, un plugin – que convierte tu WordPress en una completa suite de creación de aplicaciones web para WordPress, y lo que es más alucinante, ¡sin tocar ni una sola línea de código!, algo por lo que habitualmente habría que pagar miles de dólares (o euros).

El funcionamiento básico sería este:

  1. Instalas y activas el plugin WP App Studio
  2. Diseñas y creas tu aplicación web con WP App Studio
  3. Instalas y activas tu aplicación web como cualquier otro plugin

¡Ahí es nada!

Sus características son completísimas, no le falta prácticamente de nada para crear de manera sencilla aplicaciones web:

Creación de entidades

  • Recopilación de datos de objetos, personas, lugares o conceptos
  • Soporte completo de la API de tipos de entradas personalizadas de WordPress y más
  • Diseño de cada entidad usando desplegables y pestañas
  • Editor de diseño de entidades pudiendo ordenar, añadir o borrar atributos arrastrando y soltando
  • Control de versiones y desarrollo multiusuario.

diseño de entidades ajustes avanzados de entidades crear atributo de entidad lista de entidades crear entidades visor de entidades
Creación de taxonomías

  • Agrupación, etiquetado y categorización de datos con taxonomías personalizadas
  • Taxonomías adjuntas a una o varias entidades, incluidas las entidades por defecto (entradas o páginas)
  • Interfaz de arrastrar y soltar para filtrar datos en las taxonomías de entidades
  • Soporte de taxonomías jerárquicas y no jerárquicas.
  • Características avanzadas de personalización.

Ajustes avanzados taxonomías Crear taxonomías Visor de taxonomías
Creación de relaciones

  • Creación de conexiones entre entidades con relaciones entre ellas
  • Creación de relaciones una-a-muchas (1-M), muchas-a-muchas (M-M), o auto relaciones.
  • Cada relación puede tener uno o varios atributos.
  • Elección de donde mostrar la columna de relaciones en la pantalla de lista de entidades.
  • Elección de donde mostrar la caja de relaciones en el editor de entidades.
  • Creación de relaciones entre entidades y usuarios.

Crear relaciones Atributos de relaciones
Creación de atributos

  • Interfaz sencilla e intuitiva para crear atributos de entidades
  • 37 tipos diferentes de atributos
  • Posibilidad de establecer un atributo como requerido
  • Posibilidad de establecer un valor por defecto
  • Posibilidad de definir instrucciones para los usuarios.
  • Decidir si un atributo podrá aceptar valores múltiples, o sea, si será clonable.
  • Decidir si un atributo se usará como columna con filtros en el editor de listas de entidades.
  • Creación de reglas de validación y mensajes de error personalizados.

Creación de pantallas de ayuda

  • Se puede ofrecer información adicional, cómo las instrucciones a los usuarios al usar la pantalla de ayuda.
  • Organización de la información de ayuda en una o varias pestañas.
  • Configurar una sección de barra lateral en las pantallas de ayuda.
  • Adjuntar pantallas de ayuda a pantallas de edición, listas, entidades o taxonomías.
  • Editor WYSIWYG para la creación de información de ayuda

Crear pestaña de ayuda Crear pantalla de ayuda
Permisos de aplicaciones

  • Posibilidad de definir perfiles personalizados a través de permisos.
  • Posibilidad de desactivar capacidades por defecto en los perfiles predeterminados.
  • Posibilidad de asignar capacidades de entidad a perfiles predeterminados o personalizados
  • Posibilidad de asignar capacidades de taxonomía a perfiles predeterminados o personalizados.

Crear perfil
Migración de meta datos

  • Exportar y/o importar los meta datos de tu aplicación desde WP App Studio.
  • Actualizaciones automáticas al migrar entre versiones.
  • Control de versiones
  • Seguimiento de fechas de modificación
  • Encriptación de los meta datos

Importación/Exportación de datos de la aplicación

  • Importador visual de todos los datos de entidades y taxonomías.
  • Exportación de todos los datos de entidades y taxonomías
  • Reinicio (borrado) de todos los datos de entidades, taxonomías y relaciones.
  • Exportación e importación en formato de archivo separado por comas (CSV)

Creación de shortcodes

  • Creación de shortcodes sin tocar ni una sola línea de código
  • Diseño de shortcodes con las funciones habituales mediante un editor visual
  • Filtrado de datos de shortcode por ID, autor, fecha, etc.
  • Posibilidad de añadir el shorcode a una página o entrada o widget de texto.
  • Posibilidad de adjuntar CSS personalizado al diseño de los shortcodes.
  • Ordenado de los datos del shortcode por criterio, ascendentes o descendentes.
  • Filtrado de datos de shortcode por su estado de publicación.
  • Posibilidad de limitar el número de registro de entidades a mostrar.
  • Página de navegación para mostrar el número de registros.

Crear shortcode

Crear shortcode


Totalmente traducible

  • Cada aplicación se ofrece con un archivo POT para facilitar las traducciones.
  • Simplemente creas los archivos PO y MO como lo harías normalmente.
  • Todas las cadenas de WordPress se incluyen para su traducción.
  • Todas las entidades son traducibles
  • Todas las taxonomías son traducibles
  • Todas las extensiones de la aplicación son traducibles. Algunas traducciones ya estarán incluidas.

Creación de widgets

  • Posibilidad de crear y configurar widgets de escritorio
  • Posibilidad de crear y configurar widgets de barra lateral
  • Diseño personalizado de los widgets con un editor visual.
  • Posibilidad de añadir CSS personalizado a los datos del widget
  • Mostrar los datos del widget en orden ascendente o descendente
  • Limitación de datos del widget mediante queries personalizadas.

Crear widget Widgets de escritorio
Ajustes de la aplicación

  • Posibilidad de configurar información relacionada con la aplicación, como licencia, nombre del autor, url, etc.
  • Varios temas de interfaz Jquery para el diseño de aspecto de la aplicación.
  • Activar/desactivar menús de navegación por defecto
  • Activa/desactivar widgets de escritorio por defecto
  • Posibilidad de definir direcciones de email y nombres de sistema
  • Forzar el número de columnas en el escritorio
  • Editor visual para establecer pié de página derecho e izquierdo de la aplicación
  • Posibilidad de personalizar totalmente la barra de admin, o quitarla en el escritorio o de la web
  • Editor visual para crear widgets para enviar mensajes de administración a los usuarios
  • Posibilidad de definir un logo para la pantalla de acceso
  • Posibilidad de añadir pies de página personalizados en la zona de admin

Ajustes de la app

Ajustes de la app


Creación y guardado de filtros

  • Interfaz de arrastrar y soltar para elegir, ordenar y clasificar atributos de entidad (columnas) a mostrar
  • Interfaz intuitiva para añadir y guardar filtros complejos
  • Filtrado de los datos mediante funciones y filtros personalizados
  • Filtrado de registro de entidades mediante columnas de relaciones
  • Características avanzadas de personalización.

Creación de formularios

  • Generación rápida de bonitos y compatibles formularios sin salir de WP App Studio
  • Adaptados a las últimas técnicas de diseño web
  • Validación en el lado del cliente
  • Validación en el lado del servidor
  • Procesado sin cambiar de página (uso de AJAX)
  • Fácil personalización usando CSS
  • Prevención de bots (sin necesidad de CAPTCHAs)

Creación de “apuntadores

  • Posibilidad de crear asistentes de web y aplicación sin salir de WP App Studio
  • Destacar o atraer atención a ciertas secciones de tu aplicación.
  • Interfaz sencilla.

A ver ¿tienes alguna excusa para no crear ya tu primer plugin?. Yo creo que no. Además, WP App Studio no es difícil de aprender, hay que echarle un rato cómo a cualquier nueva aplicación pero te compensa con creces el – pequeño – esfuerzo.

Así que aprovecha el fin de semana para crear tu primera aplicación WordPress.

WordPress 3.6 beta 2

wp 36 beta 2

Ya está disponible para descarga la segunda versión beta de WordPress 3.6, donde se ha consolidado la nueva interfaz visual para los formatos de entrada en el editor, algo que estaba en duda e incluso se llegó a plantear aplazar a WordPress 3.7.

Pero no, de momento ahí sigue, con los nuevo estilos, mucho más descriptivos, además del resto de novedades de WordPress 3.6.

Si quieres ya puedes descargarla y probarla para informar de cualquier error que detectes.

Enviar a la papelera desde la barra de admin de WordPress

wordpress-trash

La barra de administración de WordPress dispone de una serie de botones, enlaces, llámalo como quieras, que permiten realizar algunas acciones rápidas, pero ya habrás comprobado que muchos plugins añaden acciones extra así que ¿por no tu?.

Una utilidad posible es mandar a la papelera la entrada que estés viendo, de manera que te evites pasar por el escritorio para esta acción. Ya se que no es muy habitual pero lo importante es el modo de hacerlo, luego tu añade la funcionalidad que quieras.

En este caso, el código a añadir al plugin de funciones, o sino creas uno solo para eso, sería este:

//Botón de enviar a la papelera en el menu de admin
function fb_add_admin_bar_trash_menu() {
  global $wp_admin_bar;
  if ( !is_super_admin() || !is_admin_bar_showing() )
      return;
  $current_object = get_queried_object();
  if ( empty($current_object) )
      return;
  if ( !empty( $current_object->post_type ) &&
     ( $post_type_object = get_post_type_object( $current_object->post_type ) ) &&
     current_user_can( $post_type_object->cap->edit_post, $current_object->ID )
  ) {
    $wp_admin_bar->add_menu(
        array( 'id' => 'delete',
            'title' => __('Papelera'),
            'href' => get_delete_post_link($current_object->term_id)
        )
    );
  }
}
add_action( 'admin_bar_menu', 'fb_add_admin_bar_trash_menu', 35 );

Y el resultado visible este …
enlace papelera barra admin wordpress

En este ejemplo se usa la función get_delete_post_link() pero hay muchas otras que puedes encontrar en tu misma instalación de WordPress, en concreto en el archivo link-template.php situado en la carpeta wp-includes, un buen sitio para aprender posibles utilidades para la barra de admin, que te recomiendo.
link template wordpress