Limpiando wp_head con remove_action

Vamos a limpiar un poco el siempre tan lleno de basura wp_head() que trae WordPress por defecto.

La función wp_head() básicamente lo que hace es llamar funciones y scripts de wp y de los plugins que instalamos y los agrega al header. En una instalación normal con un par de plugins nos encontramos con que wp_head() agregó cosas como estas en home:

PHP:
  1. <link rel='stylesheet' id='wp-pagenavi-css' href='http://wordpress-hacks.com/wp-content/plugins/wp-pagenavi/pagenavi-css.css?ver=2.70' type='text/css' media='all' />
  2. <script type='text/javascript' src='http://wordpress-hacks.com/wp-includes/js/jquery/jquery.js?ver=1.7.1'></script>
  3. <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://wordpress-hacks.com/xmlrpc.php?rsd" />
  4. <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://wordpress-hacks.com/wp-includes/wlwmanifest.xml" />
  5. <meta name="generator" content="WordPress 3.3.1" />
  6. <meta name="description" content="WordPress Hacks, Tips y consejos de WordPress en español"/>
  7. <link rel="stylesheet" href="http://wordpress-hacks.com/wp-content/plugins/ig_syntax_hilite/css/syntax_hilite_css.css" type="text/css" media="all" />
  8. <script type="text/javascript" src="http://wordpress-hacks.com/wp-content/plugins/ig_syntax_hilite/js/syntax_hilite_js.js"></script>

Y esto en el single:

PHP:
  1. <link rel="alternate" type="application/rss+xml" title="WordPress Hacks &raquo; Rediseño por el cumpleaños #2 Comments Feed" href="http://wordpress-hacks.com/rediseno-por-el-cumpleanios-2.php/feed" />
  2. <link rel='stylesheet' id='wp-pagenavi-css' href='http://wordpress-hacks.com/wp-content/plugins/wp-pagenavi/pagenavi-css.css?ver=2.70' type='text/css' media='all' />
  3. <script type='text/javascript' src='http://wordpress-hacks.com/wp-includes/js/comment-reply.js?ver=20090102'></script>
  4. <script type='text/javascript' src='http://wordpress-hacks.com/wp-includes/js/jquery/jquery.js?ver=1.7.1'></script>
  5. <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://wordpress-hacks.com/xmlrpc.php?rsd" />
  6. <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://wordpress-hacks.com/wp-includes/wlwmanifest.xml" />
  7. <link rel='prev' title='Agregar descripciones a categorías masivamente' href='http://wordpress-hacks.com/agregar-descripciones-a-categorias-masivamente.php' />
  8. <meta name="generator" content="WordPress 3.3.1" />
  9. <link rel='canonical' href='http://wordpress-hacks.com/rediseno-por-el-cumpleanios-2.php' />
  10. <link rel='shortlink' href='http://wordpress-hacks.com/?p=698' />
  11. <link rel="stylesheet" href="http://wordpress-hacks.com/wp-content/plugins/ig_syntax_hilite/css/syntax_hilite_css.css" type="text/css" media="all" />
  12. <script type="text/javascript" src="http://wordpress-hacks.com/wp-content/plugins/ig_syntax_hilite/js/syntax_hilite_js.js"></script>

Particularmente me gusta optimizarlo a mi manera, hay cosas que suelo eliminar según cada sitio.

Pueden eliminar la función que quieran, van al functions.php del theme que usen (si no existe lo crean) y agregan el código.

Para eliminar jQuery:

PHP:
  1. wp_deregister_script('jquery');

Para eliminar el enlace a RSD:

PHP:
  1. remove_action('wp_head', 'rsd_link');

Para eliminar wlwmanifest (lo usa Windows Live Writer):

PHP:
  1. remove_action('wp_head', 'wlwmanifest_link');

Para eliminar link rel='prev' y rel='next' que son el enlace al post anterior y al siguiente:

PHP:
  1. remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');

Para eliminar el generador de la versión de WordPress:

PHP:
  1. remove_action('wp_head', 'wp_generator');

Para eliminar rel='canonical' -no lo recomiendo-, pero si lo eliminan porque quieren ordenar el código no se olviden de agregarlo a mano después:

PHP:
  1. remove_action('wp_head', 'rel_canonical');

Para eliminar rel='shortlink':

PHP:
  1. remove_action('wp_head', 'wp_shortlink_wp_head');

Listar todas las tags en una lista

Valga la redundancia...

Necesitaba crear una lista de tags que muestre todas verticalmente como lo hace la función wp_list_cats() con las categorías, pero WordPress no me ayudaba mucho.
Es cierto que está la función de las nube de tags, pero no me servía. La función get_the_tag_list() muestra solo las tags de un current post, por lo que tampoco servía.

Googleando encontré esto y fué la solución, el código lo modifiqué para que quede un poco mejor, acá se los dejo:

PHP:
  1. <ul>
  2. <?php $tags = get_tags();
  3. if ($tags) {
  4. foreach ($tags as $tag) {
  5. echo '<li><a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "$tag->name" ), $tag->name ) . '" ' . '>' . $tag->name.'</a> </li>';}
  6. }
  7. ?>
  8. </ul>

Y que las tag lists estén con ustedes...

Crear una lista con artículos al azar

Nota: Leer este comentario antes de implementar el código

Si necesitás crear una lista de artículos al azar tenés suerte, ya que es algo bastante fácil de hacer.

Para hacer esto, abris el archivo donde querés mostrar la lista y agregás el código que está más abajo, yo por ejempo lo hize con el sidebar y quedó así:

El código sería el siguiente:

PHP:
  1. <h3>Art&iacute;culos al azar</h3>
  2.     <ul>
  3.         <?php $rand_posts = get_posts('numberposts=5&orderby=rand');
  4.         foreach( $rand_posts as $post ) :
  5.         ?>
  6.     <li><a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
  7.     <?php endforeach; ?>
  8.     </ul>

Por supuesto que en "numberposts=5" pueden ponerle el número de artículos a mostrar que ustedes quieran.

the_excerpt lenght

O cómo limitar el número de palabras que aparecen en the_excerpt, por supuesto sin plugins como acostumbramos.

No me voy a poner a explicar lo que es the_excerpt, pero si no saben lo que es, siempre el codex es la mejor opción.

Realmente no se cuantas son las palabras por defecto que muestra WordPress si utilizamos the_excerpt, aunque creo que son 100.

El problema (que en realidad ya no será problema) viene cuando nos interesa poner por ejemplo solo 50 palabras y no 100, he aquí la magia del functions.php, ya que lo vamos a abrir y vamos a agregar lo siguiente:

PHP:
  1. function new_excerpt_length($length) {
  2.     return xx;
  3. }
  4. add_filter('excerpt_length', 'new_excerpt_length');

Donde xx es el número de palabras que querés que muestre wp en cada excerpt.

pd: no olviden que si no tienen la llamada the_excerpt() en el archivo donde llaman a los posts y tienen por ejemplo the_content() esto no anda ;) .
pd2: a nadie le importa, pero les cuento que estoy por sacar un nuevo diseño para el sitio, que me gusta bastante y espero que le guste a varios.

WordPress 3, fechas en español

Algunos renegados usamos WordPress en inglés, yo particularmente porque me siento más cómodo, y cada uno tendrá su motivo, pero con wp en inglés las fechas también están en inglés y eso queda feo si escribimos blogs en español y nuestros visitantes son de habla hispana, por lo que, traducir y subir el locale.php es la mejor opción para poner WordPress en español, ahora como cambió el archivo (locale.php), lo he traducido de nuevo para que puedan bajarlo y subirlo en /wp-includes, si lo descargan, deben renombrar locale.txt a locale.php, o si no pueden copiarlo y crear un nuevo locale.php y pegarlo.
(more...)

Listar posts de la misma categoría sin plugins

Junto con Diego, el pibe que labura conmigo, estamos armando un sitio de ventas y necesitábamos listar otros posts de la misma categoría y no queríamos usar ningún plugin, a continuación el código:

PHP:
  1. <?php if ( is_single() ) { // Si es un single post
  2.      $cat = the_category_ID(FALSE) ; // El id de la categoría, el (FALSE) es para que no escriba el número
  3.      $post = get_the_ID(); // El id del current post
  4.      $args = array( // La variable
  5.         'cat'=>$cat, // El id de la categoría que buscamos arriba
  6.         'showposts' => 3, // El número de posts que se van a listar
  7.         'post__not_in' => array($post) // Llama al id del post actual para que no sea listado
  8. );?>

Ahora para que se muestren los posts ponemos esto:
(more...)