web-dev-qa-db-ja.com

pingbackはfaultCode 0、メッセージなしを返します

私は自分自身のpingbackクライアントを実装し、異なるホストにpingbackを送りました。

一部のワードプレスのインスタンスは、0faultCodeおよび空のfaultMessageでXML-RPC pingback要求に応答しました。

その原因は何ですか?

2
cweiske

何らかの理由で、pingbackエラーに付随するデフォルトのフィルタは、エラーメッセージが送信されませんエラーコードがでない限り48。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

標準のWordpressソースには、faultCodeが0で空のメッセージが1つのpingbackエラー呼び出しが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)';
}

そのため、URLから投稿を特定できず、URLの末尾にフラグメント/アンカー(#foo)がある場合にエラーが発生する可能性があります。そのフラグメントはタイトルとして解釈され、postsテーブルが正確にこのタイトルを持つ投稿を検索します。


残念ながら、URLにアンカーがないので、これが私の場合の理由にはなり得ません。

1
cweiske