Wenn Pingbacks/Trackbacks mit Custom Post Types nicht mehr funktionieren

Aktualisiert am:

… liegt es daran, dass kein do_pings aufgeführt wird! Was? So leicht soll die Lösung sein? Nachdem ich nun neun Stunden mit Debugging verbracht habe und einige Zeilen zusätzlichen Code in vier verschiedenen Dateien gemacht wurden, habe ich die Lösung ganz einfach entdeckt.

Mit diesem Artikel möchte ich euch helfen, Pingbacks und Trackbacks von WordPress zu debuggen und mögliche Fehlerursachen einzugrenzen und zu beheben. 

Ich habe sämtliche Code Schnipsel ausprobiert und ständig hin und her probiert, doch das senden von Pingbacks funktionierte nicht mit custom post types (aber natürlich mit dem Standard post type).

WP-Cron Control

Ist ein sehr nützliches Plugin, um WordPress-hauseigene Cronjobs zu überwachen. Unter der Rubrik Werkzeuge > Controll könnt ihr alle Cronjobs einsehen und wann sie das nächste Mal ausgeführt werden. Solltet ihr hier bereits erkennen, dass bei allen Cronjobs “Next Time Run” auf “now” steht, könnte dies ein Hinweis darauf sein, dass ein Cronjob immer und immer wieder ausgeführt wird, aber nicht zum Ende kommt.

Mögliche Ursachen:

  • PHP Memory Limit zu niedrig
  • PHP Max Execution time zu gering

Das Plugin findet ihr WP-Cron Control.

Pingbacks/Trackbacks debuggen

  1. Als nächstes solltet ihr euch einen neuen Tab aufmachen, in dem ihr einen normalen Beitrag (post_type: post), der eine Pingback Url(Einen Link zu einem anderen Blog) enthält, veröffentlicht/aktualisiert.
  2. Nun wechselt ihr wieder zu eurem Tab mit der Ansicht der Cronjobs und akutalisiert diesen
  3. Schaut die Liste durch, dort müsste nun ein Cronjob mit dem Namen/Hook “do_pings” sein und der Next Run sollte auf “now” stehen

Es erscheint kein “do_ping” in meiner Cronjob Liste

Dies ist der erste Hinweis darauf, dass WordPress euren Artikelinhalt nicht nach externen Links durchschaut. Dieser Fall tritt höchstwahrscheinlich in Verbindung mit custom_post_types auf.

Der Hook “do_ping” erscheint in meiner Cronjob Liste, aber es wird kein Pingback erzeugt

Also gut, es scheint so, als würde WordPress euren Artikelinhalt richtig zu durchsuchen. Nun müssen wir prüfen, an welche Stelle etwas schief geht. Leider macht es WordPress uns nicht ganz leicht, Pingbacks zu debuggen, weshalb wir uns selbst Debug einbauen müssen.

Ich empfehle euch hierzu zwei eigene Blogs zu Hand zu nehmen, um das Ganze testen zu können und dies mit folgendem Szenario:

Blog A veröffentlicht einen Artikel mit einem externen Link zu Blog B.

Auf Blog A müsst ihr die folgenden Dateien bearbeiten (Bitte vergesst nicht, die original Dateien wiederherzustellen, wenn ihr mit dem Debuggen fertig seid):

  • class-wp-xmlrpc-server.php
  • comment.php
  • (optional) wp-cron.php

Dieser Debug Code erzeugt an wichtigen Stellen Nachrichten, welche in einer Datei namens “pingdebug.log” im Hauptverzeichnis eures WordPress-Blogs erstellt. Die Änderungen in der Datei “wp-cron.php” sind optional, aber erleichtert einem das Ausführen vom Hook “do_pings”.

Der Output dieser Logdatei sieht dann wie folgt aus:

Bildschirmfoto 2014-11-05 um 00.57.38
Der Output im Terminal.

Eine kleine Erläuterung zu den Zeilen:

  • post content: Der Inhalt eures Artikels
  • post link temp: Alle Links in eurem Artikel
  • post link array: Alle externen Links in eurem Artikel
  • pingback server: Die Adresse an die der Ping gesendet werden soll
  • paged url: Der Link zum Artikel, in dem sich der externe Link befindet

Liste von geänderten Dateien

Alle geänderten PHP Dateien habe ich in einer Zip-Datei zusammengefasst.

class-wp-xmlrpc.php

Bildschirmfoto 2014-11-05 um 01.04.42
Die Änderungen in dieser Datei sind noch recht überschaulich.

comment.php

In der comment.php bauen wir ein bisschen debug-code ein, der uns ein paar Log-Meldungen in einer separaten Datei erzeugt.
In der comment.php bauen wir ein bisschen debug-code ein, der uns ein paar Log-Meldungen in einer separaten Datei erzeugt.

default-filters.php

In der default-filters.php müssen wir noch eine Action für unseren custom post type hinzufügen.
In der default-filters.php müssen wir noch eine Action für unseren custom post type hinzufügen.

wp-cron.php

Bildschirmfoto 2014-11-05 um 01.05.18

Schreibe einen Kommentar

Notify me of followup comments via e-mail. You can also subscribe without commenting.