Mostrar una frase aleatoria en el sidebar de wordpress
Solución a un problema técnico:
- Suponemos que algunos de nuestros posts son frases y citas famosas, y están bajo la categoría frases-y-citas.
- No queremos que se muestren esos posts (toda esa categoría) en la página pricipal.
- Queremos mostrar aleatoriamente esas frases en el sidebar (en la columna).
No mostrar una categoría en la página principal
Para evitar modificar el código PHP, vamos a instalar el plugin Advanced Category Excluder. Este plugin brinda la posibilidad de ocultar categorías en diferentes sitios: Feed, Home, RSS… En ACE>Categories Marca la categoría Frases y citas (al menos en home).
Mostrar el contenido de los posts de esa categoría
- Queremos un post aleatorio de una categoría.
- No queremos el post completo (autor, fecha, comentarios….), sólo queremos su contenido.
Hay plugins como Ramdom Redirect que te permiten crear un enlace que te lleve a un post aleatorio, incluso dentro de una categoría, salvo que en la versión 1.1 no funciona la opción de categorías (excepto en la categoría con ID=1) y necesitas saber el ID de las categorías, algo que no es fácil de encontrar. No nos queda más remedio que picar código.
En voragine.net he encontrado la forma de mostrar posts aleatorios de una categoría:
query_posts('category_name=Aleatorio&showposts=1&orderby=rand')
Esto muestra 1 post aleatorio de la categoría Aleatorio.
El problema que me he encontrado es que no quiero un post aleatorio completo, y aquí es donde me las he ingeniado para tomar sólo el contenido. Buscando bastante en google he encontrado que la función que muestra el contenido es the_content() y analizando cómo la usa WordPress en su código he añadido el código definitivo en mi sidebar.php (en la carpeta del theme.
<div class="widget">
<h2>Frase aleatoria</h2>
<?php query_posts('category_name=frases-y-citas&showposts=1&orderby=rand');
the_post();
the_content();
?>
</div>
Esto no muestra el título del post, pero si lo prefieres puedes añadir la función the_title();
Hay un problema, no lo puedes usar antes de mostar las entradas, por lo que está limitado a ponerse en una columna a la derecha, o debajo, al final de las entradas o en el pie. No funcionará en la cabecera ni en la columna de la izquierda.
