martes, 21 de junio de 2011

Hoy en AyudaWordPress.com

Hoy en AyudaWordPress.com

Link to Ayuda WordPress

Rewrite en los resultados de búsqueda

Posted: 21 Jun 2011 03:15 PM PDT

Esta es de las cosas que da gusto compartir, pues abren luz a cuestiones a veces oscuras, hasta incomprensibles de WordPress. Porque nuestro querido CMS tienes muchas virtudes pero también hay cosas que, sinceramente, no se entiende como se han pasado, y esta es una de ellas.

Y me refiero al hecho de que, aunque tengas los enlaces permanentes "bonitos" (del inglés "pretty permalinks") las URLs de los resultados de búsqueda siempre son horribles. Es como una rémora del pasado, máxime cuando en realidad WordPress si está preparado para ofrecer buenos permalinks incluso en esto.

Vamos a verlo …

Por ejemplo, si haces una búsqueda aquí mismo por "bbpress" lo que obtienes es esta URL:

HTML:
  1. http://ayudawordpress.com/?s=bbpress

Pero, haz la prueba, teclea esto otro también aquí mismo:

HTML:
  1. http://ayudawordpress.com/search/bbpress

¡Te sale lo mismo!

Entonces ¿por qué los resultados de búsqueda que te dan el formulario nativo ofrecen los permalinks horribles?. El caso es que la función para darte el resultado con los buenos permalinks existe en WordPress pero el rewrite no funciona.

Afortunadamente todo tiene solución, y Bavota ha escrito una función que, añadida al fichero functions.php de tu tema activo consigue que el rewrite funcione como debe, esta:

PHP:
  1. function search_url_rewrite_rule() {
  2.     if ( is_search() && !empty($_GET['s'])) {
  3.         wp_redirect(home_url("/") . 'search/' . str_replace(' ', '+', str_replace('%20', '+', get_query_var('s'))));
  4.         exit();
  5.     }
  6. }
  7. add_action('template_redirect', 'search_url_rewrite_rule');

Guardas y ya está, a partir de ahora todos tus permalinks de resultados de búsqueda serán del tipo tusitio.com/search/palabra

Miniatura enlazada al permalink

Posted: 21 Jun 2011 07:45 AM PDT

WordPress nos permite incluir miniaturas en la portada de nuestro sitio de manera sencilla, pero por defecto esa miniatura no enlaza al enlace permanente.

Si quieres que las miniaturas, o imágenes destacadas si así prefieres llamarlas, tengan un enlace al permalink de la entrada solo tienes que añadir el siguiente código en el fichero functions.php de tu tema activo:

PHP:
  1. add_filter( 'post_thumbnail_html', 'wps_post_thumbnail', 10, 3 );
  2. function wps_post_thumbnail( $html, $post_id, $post_image_id ) {
  3.   $html = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_post_field( 'post_title', $post_id ) ) . '">' . $html . '</a>';
  4.   return $html;
  5. }

Luego, sería conveniente hacer un ajuste en el loop de modo que si no hay miniaturas no se trate de enlazar al permalink de cualquier manera, este:

PHP:
  1. <?php
  2. if ( has_post_thumbnail()) {
  3.   echo '<a href="' . get_permalink($post->ID) . '">';
  4.   the_post_thumbnail( 'title-image', array( 'class' => 'title-image', 'alt' => 'Title Icon' );
  5.   echo '</a>';
  6. }
  7. ?>

Estupendo truco de WordPress Arena que mejora las indicaciones del Codex.

No hay comentarios:

Publicar un comentario

Seguidores

Archivo del blog