ene 05 19

Resaltar trackback y pingback en WordPress

Tiempo estimado de lectura: 1,46 minutos


Siempre se comentó que la desventaja de WordPress era tener los trackbacks junto a los comentarios. Eso, por mi parte, no me molesta; pero siempre pensé hacer algo para poder diferenciar los trackbacks y pingbacks a simple vista de los comentarios en WordPress, y siempre por una cosa u otra lo postergaba. Al final no resultó tan dificil.

A continuación voy a intentar explicarles como lo hice. Pongamos manos a la obra:

Si ustedes se ponen a ver como WP guarda los trackbacks y los pingbacks, verán que son simples comentarios con un identificador en el cuerpo del mensaje: los trackcbacks comienzan con una etiqueta <trackback /> y los pingbacks con el identificador <pingback /> por lo demás, son exactamente iguales a los comentarios comunes.

Lo que hice fue identificar esos trackbacks mediante la funcion strpos() de PHP y luego encierro todo el cuerpo restante del mensaje en etiquetas <divs> identificadas con la clase “trackback” o “pingback” dependiendo cual sea. Todo esto en el archivo template-functions-comment.php dentro de la carpeta wp-includes.

Veamos esto que acabo de explicar ya metiendo mano en el código:

Esta es la función original que se encuentra en el archivo de WordPress ya mensionado aproximadamente en la línea 172. Originalmente podrán ver que no hace mas que quitarle el identificador y aplicarle el filtro que ya trae el WP:


function comment_text() {
global $comment;
$comment_text = str_replace('<trackback />', '', $comment->comment_content);
$comment_text = str_replace('<pingback />', '', $comment_text);
echo apply_filters('comment_text', $comment_text);
}

Ahora la tarea es identficar cada uno y agregarle las etiquetas correspondientes. Para lograr esto tendrán que reemplazar esta función completa, por esta otra que identifica cuales son los trackbacks y pingbacks y los encierra en las etiquetas que deseen (yo elegi bloques divs).


function comment_text()
{
global $comment;

if (preg_match('|<trackback />|', $comment->comment_content))
{
$comment_text = str_replace('<trackback />', '', apply_filters('comment_text',$comment->comment_content));
$comment_text = "<div class="trackback">".$comment_text."</div>";
}

elseif (preg_match('|<pingback />|', $comment->comment_content))
{
$comment_text = str_replace('<pingback />', '', apply_filters('comment_text', $comment->comment_content));
$comment_text = "<div class="pingback">".$comment_text."</div>";
}

else
{
$comment_text = apply_filters('comment_text', $comment->comment_content);
}

echo $comment_text;
}

Para resumir: Reemplazando la primera funcion por la segunda, los trackbacks y pingbacks se encerraran en etiquetas divs identificadas con la clase correspondiente para poder aplicarle los estilos necesarios.

Como WP parsea algunos caracteres y los reemplaza por otros, voy a dejar el txt de este mismo tutorial en este link.

BTW: Se admiten sugerencias.

Copame! Digg it Digg it Reddit Del.icio.us

    14 Comentarios

  1. Taly OnLine » Dando crédito


    [...] rar no se pueden (o al menos yo no se como) pero los pude distinguir uno de otros gracias a un tip que vi en el blog de Lucas. Asi que ahora quedó asi. Segundo: hace mil que quiero p [...]

  2. Osvaldo


    Muy bueno che!! ma que digo muy bueno!! EXCELENTE!! :P ahora lo pongo en practica!

  3. Lucas


    Si, siempre se dijo que una de las desventajas de WP era tener los trackbacks con los comments; a mi no me molesta, pero esta interesante que al menos se los identifique a simple vista.

  4. naty


    Guenassss, aca hay alguien que me trato de señora y venia a reclamar mas respeto, ja, ja, ja;);););)…..Evidentemente estoy hecha mierda!!, :(:(:(
    Besos

  5. JEL


    Excelente. Ahora, la duda es:
    Vos elegiste div’s. Si yo elijo simplemente texto, tal y como se muestra ahora en mi weblog… ¿qué hacer?

    ¿Un txt a medida de esa necesidad, y al que se le pueda aplicar .css, please? =)

  6. Lucas


    Naty: quién te haya tratado de señora, lo agarramos entre todos y lo ponemos a hacer las pizas mientras nosotros brindamos con cerveza.

    JEL: Lo que hace ese script es agregar a todo el comentario del trackback o pingback etiquetas html para que vos despues le pongas un estilo desde el css.
    Por ejemplo:

    Trackback solo

    </div class=”tb”>TrackBack con etiquetas </div>

    Entonces en el css a la clase “tb” le agregas los estilos que quieras y a partir de ahi todos tus trackbacks estarán resaltados con el estilo que vos hayas elegido.

    Por ejemplo:

    .tb
    {
    background: #eee;
    }

    Espero haber sido claro.

  7. JEL


    Sí, se entendió a la perfección.

    Ya te ganaste un lugar entre mis enlaces. Y en breve haré un post sobre tu solución. =D

  8. naty


    Sip , sip hagamos eso……yo llevo las cervezas te parece??????, que lindooooooooo!!!!

  9. Ariel Vercelli


    Muy bueno el aporte Lucas. Muchas gracias!

  10. mariano


    muchas gracias.. estaba buscando esto hace un tiempo :)

  11. Taly OnLine


    Dando crédito
    Ya está un poco hartante esto de tanto hablar del blog, pero por ahí a alguno le sirve…

    Hice un par de cambios en la CSS y vengo a dar los créditos correspondientes.

    Primero: hace mil que quiero ponerle sombras a las imagenes, pero la vez q…

  12. m^r(oS


    Mi problema no es en realidad separarlos, sino que me gustaria poder contarlos… Es decir contar comments por un lado y tb/pbacks por el otro.
    Por ejemplo: Trackback [8] – Comments [15] (es decir que el total sea 23, no que de lso 15 comments 8 sean tbs). Any idea?
    Espero haberme expresado bien ;p

  13. Jackblack


    Solo una cosa, que soy nuevo en esto. La plantilla que uso para mi blog no venía con enlace para el URI del trackback. ¿Qué codigo tengo que añadir a la plantilla para que se muestre?

    Gracias anticipadas por vuestra ayuda.

  14. Jackblack


    Problema solucionado,gracias.

Deja un Comentario

Tags permitidos:

  • <a href="" title="">
  • <abbr title="">
  • <acronym title="">
  • <blockquote cite="">
  • <code>
  • <em>
  • <strong>