pingback возвращает код ошибки 0, сообщение отсутствует


Я реализовал свой собственный клиент обратной связи и отправил обратные связи на разные хосты.

Некоторые экземпляры wordpress ответили на запрос обратной связи XML-RPC с faultCode из 0 и пустым faultMessage.

Что может быть причиной этого?

 2
Author: Maruti Mohanty, 2013-10-24

2 answers

По какой-то причине фильтр по умолчанию, подключенный к ошибкам обратной связи, не будет отправлять сообщение об ошибке , если только код ошибки не равен 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
Author: Glen, 2017-11-12 21:27:39

Стандартный источник Wordpress содержит только один вызов ошибки обратной связи с кодом ошибки 0 и пустым сообщением, в 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). Этот фрагмент интерпретируется как заголовок, и в таблице сообщений выполняется поиск записи с точным этим заголовком.


К сожалению, в моем случае это не может быть причиной, так как у меня нет якорей в URL-адреса.

 1
Author: cweiske, 2013-10-25 05:58:14