Mostrar artículos relacionados con un shortcode

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.

Listar artículos por frecuencia de tags en varias listas

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.

Vamos a listar 10 columnas. Cada una de ellas empieza con las 10 etiquetas más usadas en la historia de nuestro site, y dispone luego títulos de artículos etiquetados con ellas:

<?php
      $noOfTags = 10;
      $noOfPosts = 4;

      $cloudRight = get_tags("orderby=count&order=DESC&number=$noOfTags");
      foreach((array)$cloudRight as $tagRight) : ?>

          <?php
          $postsRight = new WP_Query();
          $postsRight->query("tag={$tagRight->slug}&showposts=$noOfPosts");
          ?>
          <?php if ( $postsRight->have_posts() ) :?>
            <dl class="xoxo">
              <dt><?php echo $tagRight->name ?></dt>

              <?php while ( $postsRight->have_posts() ) : $postsRight->the_post(); ?>
              <dd><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></dd>
              <?php endwhile;?>

            </dl>
          <?php endif; ?>           

      <?php
          unset($postsRight);
      endforeach; ?>

Llamamos a la nube de tags general y le pedimos el nombre de los 10 más usados. Para cada resultado lanzamos un loop que nos da título de etiqueta y 4 artículos asociados en una tabla.

Estos dos números, 10 etiquetas y 4 artículos de cada, pueden ser por supuesto modificados como mejor nos convenga. Si preferís usar listas en vez de tablas, sólo tenéis que cambiar los dl por ul, y los dt y dd por li, con algún encabezado h3 para las etiquetas.

Luego habría que darle anchura a cada lista con CSS para dar el formato de columna.

Esperamos que os sea útil este truco. ¡No dudéis en comentar!

Obtener etiquetas de una cierta (o ciertas) categoría(s)

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

Loop: obtener etiquetas con get_posts

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".

Sucesivamente, en cada columna de nuestro index.php donde quisiéramos que ello ocurriera podríamos cambiar la categoría por una nueva, y disponer así de cuatro o cinco columnas por categoría (siguiendo el ejemplo: vinos blancos, vinos tintos, vinos rosados, champagne, licores…).

Si quisiéramos, sin embargo, disponer además de las etiquetas; por ejemplo, "afrutado", "seco", "fuerte", deberemos realizar un añadido especial en nuestro loop:

<?php
$posts = get_posts('category=4&numberposts=1');
foreach($posts as $post):
setup_postdata($post);
?>

<?php the_title(); ?>
<?php the_content(); ?>

<?php $posttags = get_the_tags($post->ID); if ($posttags) {
foreach($posttags as $tag) {
echo '<a href="';
echo get_tag_link($tag);
echo '">';
echo $tag->name . ' ';
echo '</a>';
}
}
?>
<?php endforeach; ?>

Como get_posts es un tipo de loop más sencillo que el normal de WordPress, necesitaremos especificar la ID numérica de cada post ($post->ID) para que WordPress nos dé, además de título y contenido, las etiquetas correspondientes enlazadas a sus archivos de etiqueta como en este caso.

Esperamos que este truco os sea útil y vuestros comentarios.

Todas nuestras etiquetas en una lista desplegable

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.

Artículos Relacionados por 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:

<?php
//for use in the loop, list 5 post titles related to first tag on current post
$backup = $post; // backup the current object
$tags = wp_get_post_tags($post->ID);
if ($tags) {
echo 'Related Posts';
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
<?php
endwhile;
}
}
$post = $backup; // copy it back
wp_reset_query(); // to use the original query again
?>

Vamos simplemente a pastear éste código dentro del Loop de nuestro single.php, o index.php, según queramos mostrarlo en la página principal de nuetsro site debajo de cada último artículo, o/y en la página singular correspondiente.

Gracias a Mike por este gran código.

Meneame Technorati del.icio.us Bitacoras.com Digg Wikio Google Bookmarks Live Yahoo! Bookmarks Yahoo! Buzz Twitter Facebook Print email

Estilizando nuestras etiquetas

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.

WordPress 2.8 permitirá poner descripciones en los tags

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.

Administrador de publicidad para WordPress

Advertising Manager (Administrador de publicidad) es un plugin para WordPress que te permitirá gestionar toda tu publicidad de Google Adsense, OpenX, entre otras redes publicitarias. Reconoce de forma automática la mayoría de las redes y permite posicionar tus anuncios con widgets, código o etiquetas en los artículos.

La versión 3.3.x soporta las siguientes redes de publicidad: Google Adsense, AdBrite, Adify, AdGridWork, Adpinion, Adroll, Commission Junction, CrispAds, OpenX, ShoppingAds, Yahoo!PN y WidgetBucks.

Además tienes un importador automático que permite soportar cualquier código de publicidad de cualquier red. Los modulos para Widgets y barra lateral son compatibles con temas tan populares como K2. También te controla que no pongas más de 3 anuncios de Adsense por página.

Aunque el plugin está aun bajo desarrollo es una opción muy recomendable de utilizar en su fase beta para reportar errores y sugerencias. Yo estoy pensado si usarlo, a ver si busco tiempo.

Sitio oficial: Advertising Manager
vía: blog OpenX

Original Post / Entrada Original: Carrero.es. Si quieres Juegos Gratis disfruta aquí.

Administrador de publicidad para WordPress

Publicar tu propio tema de WordPress

extend-themes-150x150 Publicar tu propio tema de WordPressSi tienes tiempo y te apetece crear un tema para WordPress ahora también puede publicarlos en el sitio oficial para Temas en WordPress.org.

El sitio oficial de temas de WordPress es sin duda el lugar más seguro para conseguir un buen diseño para tu bitácora ya que es extremadamente extricto con los requisitos para aceptar incluirlo en su directorio:

  1. Incluye todos los ficheros del tema en un único fichero zip.
  2. No te olvides del fichero style.css que además incluya en la cabecera:
    • Nombre del tema, un nombre único, no debe existir en el directorio.
    • Etiquetas
    • Versión (formato #.# ó #.#.#)
    • Clases de alineación: .alignright, .alignleft, .aligncenter (revisa http://codex.wordpress.org/CSS para conocer un poco más de los estilos)
  3. Realiza una captura del tema y llamalo screenshot.png. La captura debe ser real, no un sencillo pantallazo.
  4. La licencia del tema debe ser compatible con GPL.
  5. El tema no puede tener enlaces ocultos, de pago o de patrocinadores. Los enlaces al sitio del autor si están permitidos.
  6. Que incluya soporte para RSS feeds
  7. También soporte para Gravatars
  8. Soporte para widgets de WP.
  9. Mostrar categorías y etiquetas en las entradas
  10. Mostrar el título y descripción del blog
  11. El tema debe ser un trabajo 100% original y propio. NO copies.
  12. No se permite temas con material para adultos, lo que no me queda claro si aceptan temas de apuestas y casinos.

Recuerda que absolutamente todos los temas se revisan antes de publicarlos.

Ya sabes porque quizás es el sitio más seguro para descargar temas para WordPress. Ahora ya puedes publicar tu propio tema.

vía: Ayuda WordPress

Original Post / Entrada Original: Carrero.es. Si quieres Juegos Gratis disfruta aquí.

Publicar tu propio tema de WordPress