… 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
- 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.
- Nun wechselt ihr wieder zu eurem Tab mit der Ansicht der Cronjobs und akutalisiert diesen
- 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:
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.