Contenido

Separar comentarios de pingbacks en tus themes de Wordpress

8 Mar

+ 12

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; ?>

Muy util. Solo faltaria, a mi parecer añadirle un contador que tambien distinga los pings de los comentarios, es decir: ‘X’ comentarios e ‘Y’ pings.

De cualquier forma, repito, muy util.

Cuando he intentado hacerlo siempre me sale algo mal jeje, seguiré tu post a ver que tal me sale, que si es bastante necesario.

Saludos.

Muy muy util ..
gracias .. directo a mis marcadores esta noticia

Yo siempre tuve duda con lo de lso pingbacks! y ahora que estoy hacinedo mi blog quiero informarme bien antes de ponerlo para empezar bien informado y sin cometer errores.

Pero de lo que lei nadie decia bien como hacer un pingback lei que eran automaticos! pero de donde sale la url para “avisarle” al autor original? o simplemente poniendo via: anieto2k por ejemplo ya avisa?

si podrias aclarar esta duda te lo agradeceria

Otra forma más sencilla sin separarlos sería poner justo delante del autor que es un trackback.

if (get_comment_type() == “trackback”): echo ‘Trackback de ‘; else: echo ‘De ‘; endif;
echo ‘comment_author_url.’”>’.$author.’‘;

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.


Cerrar
Enviar por Correo