Contenido

Separar comentarios de pingbacks en tus themes de WordPress

8 mar

+ 14

En nuestros posts generalmente disponemos de comentario, pingbacks y trackbacks. En muchos themes, este por ejemplo, los comentarios salen mezclados con los pingbacks y esto aparte de quedar feo, puede liar a los lectores de la noticia.

Para evitar que los usuarios se lién leyendo estos comentarios, tenemos dos opciones, deshabilitar los comentarios o mostrarlos separados. Ya que la primera la desechamos directamente, obviamente, aporta más información a los usuarios y eso siempre es bueno, tendremos que separar los comentarios de los enlaces al artículo.

Código

Toda la gestión de comentarios,generalmente , se realiza en el fichero comments.php de nuestro theme, alli mostramos los datos referentes a los comentarios, pingback,… para cualquier modificación del aspecto tendremos que editarlo.

WordPress integra una variable global que desde el fichero que contiene los comentarios de dicha entrada, para empezar si editamos el fichero veremos que estamos comprobando inicialmente que exista está variable.

<?php if ($comments) : ?>

Justo debajo de esta línea, estamos recorriendo mediante un foreach todos los comentarios de la entrada actual, mostrando el diseño que nuestro theme haya optado para hacerlo. Una opción de separar el contenido sería aprovechar la salida este recorrido para mostrarlo de una forma u otra.

Usando dos arrays, estaremos diferenciando los dos posibles valores y podremos despues mostrar el tipo de comentario que deseemos donde deseemos.


    <?php
                $pingBacks = array( );
                $commentList = array( );

                foreach( $comments as $comment ) {
                     if( get_comment_type( ) == "pingback" ) {
                          array_push( $pingBacks, $comment );
                    } else {
                         array_push( $commentList, $comment );
                    }
               }
    ?>

Ahora ya disponemos de 2 variables que podemos recorrer para mostrar los tipos de comentarios que deseemos.


    <?php foreach ($commentList as $comment) : ?> /* COMENTARIOS */
       <div id="comment-<?php comment_ID() ?>">
           <h4>
               <img src="images/user_comment.png" class="contentimage" />

              <?php comment_author_link() ?> on
              <?php comment_date('F d, Y') ?> at
              <?php comment_time() ?>

              <p><?php comment_text() ?></p>

          </h4>
       </div>

    <?php endforeach; ?>

    <?php foreach ($pingBacks as $comment) : ?> /* PINGBACKS */
       <div id="comment-<?php comment_ID() ?>">
           <h4>
               <img src="images/user_comment.png" class="contentimage" />

              <?php comment_author_link() ?> on
              <?php comment_date('F d, Y') ?> at
              <?php comment_time() ?>

          </h4>
       </div>
    <?php endforeach; ?>

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.