enero, 2010

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 fin, con WordPress 2.9 se nos ha hecho mucho más fácil indicar, mientras escribimos, cuál será la miniatura (o thumbnail) que representará al artículo en cuestión.

Para ello, colaremos este código en functions.php (al final de todo):

<?php
add_theme_support( 'post-thumbnails' );
?>

Ahora podremos, desde la Administración, subir y asignar una imagen cuya función exclusiva será la de ‘representar’ al post, e “imprimirse” por tanto en nuestros templates, al lado del texto del artículo (pero independientemente de éste).

Leer más »

Vamos a mostrar hoy un simple bloque de código muy útil para cuando usemos ciertas categorías con fines exclusivamente administrativos y no quisiéramos que se muestren al público siempre que listamos las categorías a las que un artículo pertenece.

El código es el siguiente, y lo tenemos que insertar dentro del Loop, en single.php, index.php y archive.php principalmente:

Clasificado en : <?php
foreach((get_the_category()) as $category) {
if ($category->cat_ID != '5') {
echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> ';
}
}
?>

En vez de usar el típico the_category, lo sustituiremos con este código.

Leer más »

Etiquetas:

En WordPress disponemos de un “template tag” muy útil cuando estamos creando un tema y necesitamos listar nuestras páginas estáticas como parte o totalidad del menú del encabezado de nuestro site.

En vez de crear la lista manualmente (y tener que editarla más tarde en los templates ante cualquier cambio), podremos desde un principio usar wp_page_menu como método para imprimir nuestra lista de páginas:

<?php wp_page_menu('exclude=24,27,28&menu_class=menu menu-de-contacto'); ?>
<?php wp_page_menu('include=24,27,28&menu_class=menu menu-principal'); ?>

Aquí se nos crearían por lo pronto dos menús con sus links preparados: el primero incluye todas nuestras páginas salvo tres, y el segundo sólo esas tres páginas. Podríamos usarlos de distinta manera, por ejemplo, uno que ocupara el 100% de la anchura de la página, y otro, más arriba, al lado de nuestro logo.

Leer más »

Etiquetas: ,

Habitualmente encontramos sites donde al final del post se muestra una caja con información sobre el autor: su imagen (Gravatar), su nombre, una pequeña reseña biográfica… así como, por ejemplo, la cantidad de artículos que ese autor haya publicado en el site.

Hoy veremos la forma de mostrar todo ello, y proporcionaremos algunos estilos en CSS que nos ayuden a crear los nuestros propios.

Marcelo escribió hace un tiempo sobre el tag fundamental que nos traerá las informaciones de la base de datos, es decir, de la pantalla de información sobre el autor que podemos editar en la Administración de WordPress una vez estamos registrados en el site, y donde podemos rellenar los campos de “Biografía”, “URL”, “Gravatar”, e-mail, etc.

Leer más »

Etiquetas:

Para los twitteradictos que a la vez tengan un blog, John Resig (creador de jQuery) ha escrito un magnífico script que nos permitirá añadir un botón de Re-twittea este artículo que incorporará a su vez un contador de clicks.

Demo

Para conseguirlo, tendremos que abrir el single.php o el index.php de nuestro tema y, dentro del loop, añadir lo siguiente:

<a class="retweet" href="<?php the_permalink(); ?>">
     <?php the_title(); ?>
</a>

Leer más »

Etiquetas:

CDN es el acrónimo de Content Delivery Network. Dicho así tampoco aclara mucho, ¿no? Una CDN es una red de servidores que replican el contenido de una web entre varias máquinas, para hacer que esté siempre disponible y que además sea accesible de una forma más rápida.

Pongamos un ejemplo. Si tienes un blog alojado en un hosting, todo el contenido del mismo lo servirá ese hosting, usando su propio ancho de banda. Si aún no tienes muchas visitas, puede que no tengas mayor problema, pero si tu blog empieza a crecer, el ancho de banda se puede ir colapsando. Aún peor, imagina que un día das con tu súper-post, que atrae a miles de visitas y se te cae el hosting, o tardan tanto tiempo en acceder a tu página que acaban no leyendo el artículo. Un CDN, entre otras cosas, evita esto.

Leer más »

Etiquetas: , ,

Escritorio

Hoy os voy a hablar de un plugin que hace que nuestro escritorio de WordPress sea mucho más atractivo. Gran parte del tiempo que pasamos en nuestro blog lo hacemos en el escritorio, y tener un escritorio atractivo y productivo nos puede facilitar la vida.

Leer más »

Si queremos crear un índice o unos archivos donde se haga un uso extensivo de imágenes (al lado de los extractos, por ejemplo), siempre puede ser interesante hacerlo sin depender de plugins.

Hoy vamos a proponeros un código que lo hará posible, y que deberemos pegar en functions.php.

Se nos permitirá entonces disponer de un nuevo ‘template tag’, que podremos usar dentro de nuestros Loops, con el que imprimir la imagen en cuestión.

Leer más »

Etiquetas: ,

No es nada fuera de lo habitual el hackeo de páginas web, y el hecho de que WordPress sea un sistema tan utilizado hace a las personas malintencionadas fijarse en este tipo de software. Es por eso que, si no tienes el blog bien protegido, podría pasarte que lo atacaran.

Muchas veces puedes no enterarte de que te han hackeado el sitio, ya que los usuarios malintencionados sólo muestran enlaces al robot de Google sin que los visitantes “normales” de nuestra web puedan notar nada. Esta técnica es conocida como cloaking.

Una de las formas manuales de detectar que nuestra web ha tenido una inyección de código malicioso es entrar en Google y buscar nuestro propio sitio web. Desde el buscador, accederemos a la caché: éste es el contenido que el buscador ha indexado de nuestra web. Si vemos algo diferente, habitualmente todo de texto que no es nuestro al final de nuestra página, es que hay algún tipo de hackeo.

Leer más »