Stikkordarkiv: Pingback

Separere kommentarer og pingbacks i WordPress

De fleste bloggere setter pris på kommentarer på sidene sine, og en link til et innlegg er heller ikke å forakte. Linkene kan være fra din egen blogg, eller fra andre som av ulike årsaker ønsker å gi link til ditt innlegg. Ved standard oppsett i de fleste WordPress installasjoner vil disse linkene føre til pingbacks eller trackbacks ((Se Wikipedia for forklaring.)) sammen med kommentarene. På norsk kalt tilbakesporinger. Tilbakesporinger fra egne innlegg kan skrus av om ønskelig, enten via en plugin eller ved instillinger i WordPress ((Se kommentar fra Martin Bekkelund)) Disse vil ligge for mange temaer ligge blandet med kommentarer. Noen vil ha det slik, mens mange ønsker å gi en ryddigere oversikt over blandingen av kommentarer og tilbakesporinger. Og det er mulig å separere dette.

De som har temaer som automatisk skiller mellom kommentarer og tilbakesporinger slipper å tenke noe mer på dette. Men for oss andre, kan det jo være greit å rydde litt. Så la oss sette i gang.

Det viktigste først: Før du gjør større endringer eller oppdateringer i WordPress (og det meste annet) må du huske å ta backup!

Filen det skal redigeres i er comments.php under ditt gjeldende tema. Det er denne filen du nå skal ha tatt backup av. Jeg tar intet ansvar for all elendighet som måtte følge, skulle du mangle backup… Du har tatt backup? Fint.

Det er flere måter å skille mellom kommentarer og tilbakesporinger på. Jeg har valgt å gjøre dette på en veldig enkel måte. Jeg tar en kopi av loopen for å bla gjennom kommentarer, for så å bruke den ene loopen til kun kommentarer og den andre loopen til tilbakesporinger.

I comments.php vil du finne en loop, bestående av en foreach-løkke. Det er denne vi skal gjøre endringene ved. Hos meg så den i utgangspunktet ut som dette:

    < ?php foreach ($comments as $comment) : ?>
  1. ...
  2. < ?php /* Changes every other comment to a different class */ if ('alt' == $oddcomment) $oddcomment = ''; else $oddcomment = 'alt'; ?> < ?php endforeach; /* end for each comment */ ?>

Jeg har ikke tatt med innholdet innenfor

  • , for lesbarhetens skyld.

    Litt endringer må gjøres: < ?php foreach ($comments as $comment) : ?> < ?php if (get_comment_type() == 'comment') { ?>

  • ...
  • < ?php /* Changes every other comment to a different class / if ('alt' == $oddcomment) $oddcomment = ''; else $oddcomment = 'alt'; ?> < ?php } ?> < ?php endforeach; / end for each comment */ ?> Det er ikke store endringene som skal til. To linjer er blitt lagt til. Den første linjen er en if-setning som sjekker om kommentaren er av typen ‘comment’. Den andre linjen, < ?php } ?>, er nødvendig for å fortelle WordPress hvor if-setningen skal avsluttes. Er kommentaren av typen ‘comment’ kjøres koden innenfor if-setningen. Dette betyr i praksis at det kun er kommentarer som blir med, ikke og tilbakesporinger. Vi trenger altså en loop til.

    Vi kopierer loopen vi har, og gjør en liten endring i denne: < ?php foreach ($comments as $comment) : ?> < ?php if (get_comment_type() != 'comment') { ?>

  • ...
  • < ?php /* Changes every other comment to a different class / if ('alt' == $oddcomment) $oddcomment = ''; else $oddcomment = 'alt'; ?> < ?php } ?> < ?php endforeach; / end for each comment */ ?> Den er lik, med unntak av if-setningen som nå gjør det motsatte. Vi ønsker nå kun å kjøre koden dersom kommentarer ikke er av typen ‘comment’. Koden legger vi etter den forrige loopen.

    Du har nå to looper, en for kommentarer og en for tilbakesporinger. Tilbakesporinger vil nå komme etter kommentarene på bloggen. For å gjøre det enda litt mer oversiktlig kan det være lurt å gjøre noen endringer i loopen som tar for seg tilbakesporinger. Jeg har valgt å fjerne teksten for tilbakesporinger, samt lagt på en liten tekst som forteller om dette er en Trackback eller Pingback ved hjelp av en liten kodesnutt: if (get_comment_type() == 'pingback') { echo "Pingback"; } else if (get_comment_type() == 'trackback') { echo "Trackback"; }

    I tillegg har jeg valgt å legge til en overskrift mellom de to loopene for tilbakesporinger. Jeg ønsker ikke å vise denne overskriften dersom det ikke finnes tilbakesporinger. Koden jeg har brukt er lagt mellom de to loopene og ser slik ut: < ?php $pingbacksfound = false; ?> < ?php foreach ($comments as $comment) : ?> < ?php if (get_comment_type() != 'comment' && $pingbacksfound == false) { ?>

    Trackbacks/pingbacks

    < ?php $pingbacksfound = true; ?> < ?php } ?> < ?php endforeach; /* end for each comment */ ?>

    Det var det. Som nevnt finnes det helt sikkert mange måter å løse dette på. Har du løst dette på en annen eller bedre måte setter jeg pris en liten kommentar om det.

    Jeg har ikke veldig mange tilbakesporinger på denne bloggen, men du kan se et eksempel på hvordan det hele ser ut i innlegget Det Gode Liv.

    Litt forsinket

    Jeg lovte å legge ut en liten veiledning på hvordan man kan separere kommentarer og trackbacks i WordPress. Jeg har nesten skrevet denne ferdig, men rekker dessverre ikke fullføre den idag. Regner med å kunne gjøre den ferdig imorgen, men lover ingenting. Jeg ligger litt etter på andre ting også… Må bare prioritere. For dere som ventet må jeg bare beklage. Jeg kommer sterkere tilbake imorgen. Sorry Baby

    Bli kvitt interne pingbacks

    Når man lenker til egne tidligere poster i WordPress er standard oppførsel at det legges til en pingback i posten det lenkes til. Mange vil ha det slik, men for oss andre finnes det heldigvis en enkel løsning: nok en plugin. Denne gang er det et plugin ved navn No Self Pings som kan brukes.

    Bruken av dette innstikket er ganske så enkel. Aktiver det. Ferdig. Fremtidige lenker til egne sider vil heretter ikke skape pingbacks. Akkurat som jeg vil ha det.

    Hvordan skille mellom kommentarer og trackbacks i tema som ikke støtter dette kommer imorgen. For de som vil ha egne pingbacks er dette kanskje en bedre løsning.