私は自分自身のpingbackクライアントを実装し、異なるホストにpingbackを送りました。
一部のワードプレスのインスタンスは、0
のfaultCode
および空のfaultMessage
でXML-RPC pingback要求に応答しました。
その原因は何ですか?
何らかの理由で、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, '' );
}
標準の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にアンカーがないので、これが私の場合の理由にはなり得ません。