Etiquetas

Los shortcodes, introducidos en la versión 2.5 de WP, son una manera fácil de añadir en el editor HTML de WordPress diferentes funcionalidades, como las galerías de imágenes, la activación de tal ciertos plugins sólo para la ocasión (adición de tablas, formularios de contacto, botones de compra, …), etc.

Hoy vamos a pegar un código en functions.php que nos permitirá mostrar una lista de artículos relacionados siempre y cuando hayamos incluído cierto shortcode al final del artículo que estemos escribiendo escribiendo.

Copiar y pegar

Guardamos y regresamos a nuestros artículos. A los que les añadamos este shortcode

     [related_posts]

…mostrarán una lista de relacionados, basada en las etiquetas.

El shortcode lo podemos emplazar (he ahí otra ventaja además del poder escoger artículo a artículo si lo usamos o no) allí donde queramos: principio, mitad o final del post.

Siempre es interesante que en nuestra web uno pueda sacar el máximo provecho al trabajo de clasificación realizado en la Administración. Una de las formas para lograr rendimiento es a través de las etiquetas, a las que hoy daremos un uso especial.

Leer más »

Etiquetas: ,

Si queremos, en algún espacio de nuestros templates (en los archivos, el índice, single.php…), proponer un conjunto de etiquetas que reúnan posts no sólo marcados con ellas, sino que pertenezcan a una misma categoría, tenemos aquí el código para conseguirlo.

Abriremos functions.php y pegaremos lo siguiente: (copiar y pegar)

A partir de aquí, en nuestro template (por ejemplo, index.php), escogeremos el lugar que creamos más conveniente para nuestras etiquetas y escribiremos la llamada a la función:

   $args = array('categories' => '12,13,14');
   $tags = get_category_tags($args);

Por supuesto, deberemos poner los tags de apertura y cierre de PHP.

De este modo, vamos a reunir etiquetas que hayan sido usadas en artículos bajo las categorías con ID 12, 13 y 14. La identidad numérica de cada categoría la sabremos sobrevolándola con el cursor del ratón en nuestro panel de Administración.

Créditos: foros de WordPress.org

Cuando en WordPress nos interesa tener varios loops en una página (por ejemplo, para mostrar varias columnas, una por categoría), una de las más fáciles maneras de conseguirlo es con get_posts:

<?php
$posts = get_posts('category=vinos-blancos&numberposts=1');
foreach($posts as $post):
setup_postdata($post);
?>
<?php the_title(); ?>
<?php the_content(); ?>
<?php endforeach; ?>

En este ejemplo, estamos convocando a un artículo (numberposts=1), el último artículo que hayamos escrito de hecho, dentro de la categoría "Vinos Blancos".

Leer más »

Etiquetas: ,

Si no tenemos un número excesivo de etiquetas y las quisiéramos desplegar en una lista, aquí tenemos el código para realizarlo.

Primero, iremos a functions.php o lo crearemos como simple archivo de texto y pegaremos en su interior el siguiente código:

<?php
function dropdown_tag_cloud( $args = '' ) {
$defaults = array(
'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
'exclude' => '', 'include' => ''
);
$args = wp_parse_args( $args, $defaults );

$tags = get_tags( array_merge($args, array('orderby' => 'count', 'order' => 'DESC')) ); // Always query top tags

if ( empty($tags) )
return;

$return = dropdown_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args
if ( is_wp_error( $return ) )
return false;
else
echo apply_filters( 'dropdown_tag_cloud', $return, $args );
}

function dropdown_generate_tag_cloud( $tags, $args = '' ) {
global $wp_rewrite;
$defaults = array(
'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
);
$args = wp_parse_args( $args, $defaults );
extract($args);

if ( !$tags )
return;
$counts = $tag_links = array();
foreach ( (array) $tags as $tag ) {
$counts[$tag->name] = $tag->count;
$tag_links[$tag->name] = get_tag_link( $tag->term_id );
if ( is_wp_error( $tag_links[$tag->name] ) )
return $tag_links[$tag->name];
$tag_ids[$tag->name] = $tag->term_id;
}

$min_count = min($counts);
$spread = max($counts) - $min_count;
if ( $spread <= 0 )
$spread = 1;
$font_spread = $largest - $smallest;
if ( $font_spread <= 0 )
$font_spread = 1;
$font_step = $font_spread / $spread;

// SQL cannot save you; this is a second (potentially different) sort on a subset of data.
if ( 'name' == $orderby )
uksort($counts, 'strnatcasecmp');
else
asort($counts);

if ( 'DESC' == $order )
$counts = array_reverse( $counts, true );

$a = array();

$rel = ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : '';

foreach ( $counts as $tag => $count ) {
$tag_id = $tag_ids[$tag];
$tag_link = clean_url($tag_links[$tag]);
$tag = str_replace(' ', '&nbsp;', wp_specialchars( $tag ));
$a[] = "\t<option value='$tag_link'>$tag ($count)</option>";
}

switch ( $format ) :
case 'array' :
$return =& $a;
break;
case 'list' :
$return = "<ul class='wp-tag-cloud'>\n\t<li>";
$return .= join("</li>\n\t<li>", $a);
$return .= "</li>\n</ul>\n";
break;
default :
$return = join("\n", $a);
break;
endswitch;

return apply_filters( 'dropdown_generate_tag_cloud', $return, $tags, $args );
}
?>

Acto seguido, iremos al template en el que nos interese insertar la lista desplegable y, orientándonos entre el HTML, pegaremos el siguiente código:

<select name="tag-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
<option value="#">Tags</option>
<?php dropdown_tag_cloud('number=0&order=asc'); ?>
</select>

Nuestros tags seran ahora mostradis en un desplegable.

Etiquetas: ,

Al final de nuestros posts, siempre es agradable para el lector tener una lista de artículos relacionados, por si deseara continuar su búsqueda en nuestro blog. Aprovechando el sistema de etiquetas que WordPress nos brinda, podremos, con el siguiente código, disponer de tal lista.

A notar que estaremos tabajando aquí con etiquetas y no categorías, que requerirían otro código (y que en nuestro siguiente artículo desvelaremos), y que por tanto cuantos más artículos compartan etiqueta, más útil sera el plan:

Leer más »

Si en alguna ocasión queremos estilizar con comodidad nuestra nube de etiquetas, es interesante saber que WordPress la lanzará dentro de una lista con la clase “wp-tag-cloud”.

El resultado en nuestro código fuente sería entonces parecido a lo siguiente :

<ul class="wp-tag-cloud">
	<li><a href="url-hacia-el-Archivo">etiqueta1</a></li>
	<li><a href="url-hacia-el-Archivo">etiqueta2</a></li>
	<li><a href="url-hacia-el-Archivo">etiqueta3</a></li>
	<li><a href="url-hacia-el-Archivo">etiqueta4</a></li>
	<li><a href="url-hacia-el-Archivo">etiqueta5</a></li>
	<li><a href="url-hacia-el-Archivo">etiqueta6</a></li>
	etc.
</ul>

Si preferimos prescindir del juego de tamaños que, por defecto, WordPress usará en nuestras etiquetas, así como darles algo de color, os propongo un método para conseguirlo, así como un poco de CSS, que nos funcionará idealmente en Firefox.

Dirijámonos al template de nuestra barra lateral (sidebar.php).
Lo abriremos con NotePad++, y añadiremos, hacia el final y antes de que se cierre el “div” de nuestra sidebar, el siguiente código :

<?php
	wp_tag_cloud('smallest=10&largest=10&unit=px&number=75');
?>

Nos aseguraremos así que los tamaños de las etiquetas son constantes, a 10px, y daremos la instrucción para llamar a 75 de ellas en cada ocasión.

Iremos ahora a nuestro archivo de CSS (style.css) y lo abriremos igualmente, para escribir al final de todo lo siguiente :

.wp-tag-cloud a{
	display:inline;
	color:#555;
	padding:.5em;
	margin:.2em;
	background:#eee;
	-moz-border-radius: 9px;
	-khtml-border-radius: 9px;
	-webkit-border-radius: 9px;
	border-radius: 9px;
	border-bottom:1px solid #ddd;
	border-right:1px solid #ddd
	}

.wp-tag-cloud a:hover{
	background:#BEE914;
	color:#111
	}

Firefox nos proporcionará unas etiquetas redondeadas, que quedarán igualmente bién en IE por su colorido, y, en cualquier caso, privilegiaremos la usabilidad de los elementos con un toque de Web 2.0.

Os propongo pues aceptar el reto, y someter a test esta pequeña prueba de diseño.

Etiquetas:

Leo en WordPress Hacks que WordPress 2.8, al igual que ocurre con las categorías, permitirá poner descripciones en las etiquetas.

Ahora solo falta que diseñen algun tema que incluya esta función. Aun así y viendo los pocos temas que disponen de esta función para las categorías, dudo mucho que los diseñadores se animen a incluirla en sus diseños.