it-swarm.com.de

pingback gibt faultCode 0 zurück, keine Nachricht

Ich habe meinen eigenen Pingback-Client implementiert und Pingbacks an verschiedene Hosts gesendet.

Einige WordPress-Instanzen antworteten auf die XML-RPC-Pingback-Anforderung mit einem faultCodevon 0 und einem leeren faultMessagename__.

Woran kann das liegen?

2
cweiske

Aus irgendeinem Grund sendet der an Pingback-Fehler angehängte Standardfilter keine Fehlermeldung , es sei denn , der Fehlercode ist 48. Von wp-includes/commment.php:

function xmlrpc_pingback_error( $ixr_error ) {
    if ( $ixr_error->code === 48 )
        return $ixr_error;
    return new IXR_Error( 0, '' );
}
1
Glen

Die Standard-Wordpress-Quelle enthält nur einen einzelnen Pingback-Fehleraufruf mit dem Fehlercode 0 und einer leeren Nachricht in wp-includes/class-wp-xmlrpc-server.php:

} elseif ( is_string($urltest['fragment']) ) {
        // ...or a string #title, a little more complicated
        $title = preg_replace('/[^a-z0-9]/i', '.', $urltest['fragment']);
        $sql = $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_title RLIKE %s", like_escape( $title ) );
        if (! ($post_ID = $wpdb->get_var($sql)) ) {
                // returning unknown error '0' is better than die()ing
                return $this->pingback_error( 0, '' );
        }
        $way = 'from the fragment (title)';
}

Der Fehler kann also auftreten, wenn der Beitrag nicht über die URL ermittelt werden kann und sich am Ende der URL ein Fragment/Anker (#foo) befindet. Dieses Fragment wird als Titel interpretiert und die Beitragstabelle wird nach einem Beitrag mit genau diesem Titel durchsucht.


Leider kann dies in meinem Fall nicht der Grund sein, da ich keine Anker in den URLs habe.

1
cweiske