Lo hice y lo entendí

El blog de Vicente Navarro
13 ene

Comentarios anidados con WordPress 2.7, nueva vista para archivos y otros cambios en la plantilla

He estado trabajando bastante en reformar la plantilla. No ha habido ningún gran cambio estético, sino que en general han sido cambios para añadir funcionalidades. Además de otras muchas pequeñas mejoras, casi imperceptibles, las dos modificaciones más importantes han sido que la plantilla ahora permite los nuevos comentarios anidados (unos comentarios responden a otros) que ha introducido WordPress 2.7 y que ahora, las páginas de Categorías, Etiquetas o Archivos muestran todas las entradas existentes, pero sin nada de texto o extractos, sólo mostrando el título y los metadatos. Esto era algo que tenía muchas ganas de implementar desde que me inicié en esto de escribir un blog, porque la forma que tiene WordPress por defecto de mostrar las Categorías, Etiquetas y Archivos, sacando 10 entradas por página, no te deja hacerte a la idea en un solo vistazo de qué hay exactamente en cada sección.

Comentarios anidados con WordPress 2.7

En relación a los comentarios anidados, para entender cómo funciona el nuevo loop y cómo adaptar nuestra plantilla para mostrarlos como queramos, podemos usar varias excelentes páginas como referencia:

Al final yo no metí la tijera en la actual plantilla directamente para cambiar el sistema de comentarios viejo por el loop actual. Lo hice al contrario: copié el comments.php de la plantilla de por defecto, la Kubrick, y la fui adaptando a mis necesidades para tener una plantilla que soportara ya comentarios anidados sin problemas y con la máxima compatibilidad con cualquier plugin. El resto fue mucho trabajo de ajustar los estilos en CSS. El resultado se puede ver en los primeros comentarios de ejemplo de esta misma entrada.

¡Ah! Y no se nos tiene que olvidar activar los comentarios anidados en el panel de control (Opciones → Discusión).

Separar los comentarios normales de los trackbacks/pingbacks en WordPress 2.7

Sin embargo, me encontré con un inconveniente con el nuevo loop: por defecto no es fácil separar los comentarios y los pingbacks y trackbacks, ya que no me gusta que anden mezclados. En la plantilla anterior, esto lo hacía yo con código demasiado a medida y que nunca me acabó de convencer.

Con la ayuda de:

aprendí que además de poder detectar si hay comentarios (incluyendo comentarios normales y pings) con:

<?php if ( have_comments() ) : ?>

es fácil detectar si hay comentarios normales con:

<?php if ( ! empty($comments_by_type['comment']) ) : ?>

siempre y cuando la función comments_template(), que se suele usar en single.php y page.php sea llamada con estos parámetros:

comments_template('', true);

lo que causará que se cree el array $comments_by_type.

Una vez verificado que hay comentarios normales, los mostraremos con:

<?php wp_list_comments('type=comment'); ?>

Y a continuación, podremos hacer lo mismo con los pings. Verificamos si existen:

<?php if ( ! empty($comments_by_type['pings']) ) : ?>

y después los mostramos:

<?php wp_list_comments('type=pings'); ?>

Sin embargo, esto no se lleva muy bien con el nuevo sistema de comentarios paginados de WordPress 2.7. Yo preferiría que los comentarios normales sí que se paginara, pero que todos los trackbacks y pingbacks salieran en todas las páginas de comentarios. Para hacer esto, me he decantado por usar el nuevo loop de comentarios de WordPress 2.7 sólo para los comentarios normales y usar el sistema viejo pre-WordPress 2.7 para los pings. Todo junto tiene el siguiente aspecto (de los trackbacks y pingbacks sólo saco una única línea con el título):

<?php if ( have_comments() ) : ?>
 
   <div id="comentarios">
 
   <?php if ( ! empty($comments_by_type['comment']) ) : ?>
 
        <h4 id="comments"><?php comments_number('Sin Comentarios', '1 Comentario', '% Comentarios');?> <?php printf('a “%s”', the_title('', '', false)); ?></h4>
 
        <div class="navigation navigationcomments">
                <div class="alignleft"><?php previous_comments_link() ?></div>
                <div class="alignright"><?php next_comments_link() ?></div>
        </div>
 
        <ul class="commentlist">
        <?php wp_list_comments('avatar_size=80&type=comment');?>
        </ul>
 
        <div class="navigation">
                <div class="alignleft"><?php previous_comments_link() ?></div>
                <div class="alignright"><?php next_comments_link() ?></div>
        </div>
 
   <?php endif; ?>
 
 
   <?php if ( ! empty($comments_by_type['pings']) ) : ?>
 
        <h4 id="tblisttitle">Trackbacks y pingbacks:</h4>
 
        <ul id="tblist">
 
        <?php foreach ($comments as $comment) : ?>
            <?php if (get_comment_type() == "pingback" || get_comment_type() == "trackback" ) : ?>
               <li><?php comment_author_link();?></li>
            <?php endif; ?>
        <?php endforeach; ?>
 
        </ul>
 
   <?php endif; ?>
 
   </div>
 
<?php else : // this is displayed if there are no comments so far ?>

<?php endif; ?>

Modificar el avatar por defecto

Si queremos cambiar el avatar que mostraremos para los usuarios que no tengan uno definido, ya que no nos gusta ninguno de los que nos ofrece el panel de control por defecto, hemos de seguir los consejos que leemos en:

En mi caso, el procedimiento anterior se traduce en las siguientes líneas en el fichero functions.php:

add_filter( 'avatar_defaults', 'lhyle_addgravatar' );
function lhyle_addgravatar( $avatar_defaults ) {
   $myavatar = get_bloginfo('template_directory') . '/img/nogravatar.png';
   $avatar_defaults[$myavatar] = "LHYLE";
   return $avatar_defaults;
}

y en elegir mi imagen en el panel de control de WordPress (Opciones → Discusión):

Selección de avatar en el panel de control de WordPress

No limitar el número de entradas mostradas en páginas de Categorías, Etiquetas y Archivos

En lo que respecta al nuevo formato para mostrar Categorías, Etiquetas y Archivos (que podéis ver pulsando en cualquiera de los enlaces de la barra lateral), la clave era saltarme la limitación del número de entradas por página, que por defecto es 10 y que se puede modificar fácilmente en el panel de control (Opciones → Lectura). 10 entradas por página está muy bien para la página principal, pero que yo quería un número ilimitado de entradas sólo en el caso de las páginas de Categorías, Etiquetas y Archivos.

Tal vez podría haber usado el plugin Custom Post Limits, pero tras leer:

conseguí quitar el límite de entradas por página para Categorías, Etiquetas y Archivos tan sólo con añadir al fichero functions.php las siguientes líneas:

add_filter( 'post_limits', 'quita_limites' );
function quita_limites( $limits )
{
  if( is_archive() ) {
     // remove limits
     return "";
  }
 
  // return default limits
  return $limits;
}

Es interesante notar que la función is_archive() es afirmativa también para las páginas de Categorías y Etiquetas (WordPress Codex: Conditional Tags).

Para separar cómo presentar las páginas de archivos de forma diferente a cómo vamos a presentar la portada normal, en el fichero index.php usaremos un bucle así:

<?php while (have_posts()) : the_post(); ?>
 
    <?php if ( !is_archive() ) : ?>
 
    <?php else : ?>
				   
    <?php endif; ?>
        
<?php endwhile; ?>

¿Barra lateral a la derecha o a la izquierda?

Finalmente, he estado dándole algunas vueltas a si es mejor la barra lateral a la derecha o a la izquierda. Hay buenos argumentos a favor de una y otra opción:

La Wikipedia pone la barra en el lado izquierdo, pero la mayoría de blogs la sitúa en el lado derecho. Hay quien dice que si la pones a la izquierda, le estás dando más importancia a la facilidad de navegación, y que si la pones a la derecha, el contenido es lo importante de la página. Sea como sea, no me acaba de gustar la barra a la derecha con mi diseño actual, probablemente porque es un diseño sin ancho fijo que permite al lector adaptar fácilmente la longitud de las líneas ajustando el ancho de su navegador. Por ello, me he decidido a dejar la barra a la izquierda y, siguiendo lo que comenté en Hojas de estilos (CSS) alternativas, además de una hoja de estilos alternativa que elimina la barra lateral, he añadido otra que permite moverla a la derecha.

CSS alternativos para modificar la barra lateral

:wq

Entradas relacionadas

9 Comentarios a “Comentarios anidados con WordPress 2.7, nueva vista para archivos y otros cambios en la plantilla”

  • Comentarista1 dice:

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

    • Comentarista2 dice:

      Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.

      • Comentarista3 dice:

        Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?

      • Comentarista4 dice:

        Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

        • Comentarista5 dice:

          At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio.

          • Comentarista6 dice:

            Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus.

          • Comentarista7 dice:

            Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat

Trackbacks y pingbacks:

Tema LHYLE09, creado por Vicente Navarro