XMLRPC pingback.extensions.getPingbacks не работает с параметрами

Вопрос или проблема

Я хочу использовать метод pingback.extensions.getPingbacks с параметрами в URL, такими как post_type или page. Я использую код ниже, но он не работает, когда я хочу добавить параметр, и я получаю код ошибки 0 и пустую строку ошибки, но, похоже, он работает, когда я передаю только URL без параметров. Может кто-нибудь помочь мне?

<?php

require_once 'class-IXR.php';
$rpc = new IXR_Client('http://localhost/wordpress/wordpress/xmlrpc.php');



$result = $rpc->query('pingback.extensions.getPingbacks','http://localhost/wordpress/wordpress/2018/01/17/hallo-welt/&post_type=something');

if(!$result) {
echo 'Error [' . $rpc->getErrorCode() . ']: ' . $rpc->getErrorMessage();

}

var_dump($rpc->getResponse());


?>

Сообщение об ошибке

Error [0]: array(2) { ["faultCode"]=> int(0) ["faultString"]=> string(0) "" } 

Обратите внимание, что WordPress поставляется с WP_HTTP_IXR_CLIENT, который расширяет IXR_Client. Поэтому замените

require_once ABSPATH . WPINC . '/class-IXR.php';
$rpc = new IXR_Client( 'http://localhost/wordpress/wordpress/xmlrpc.php' );

на:

require_once ABSPATH . WPINC . '/class-IXR.php';
require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php';
$rpc = new WP_HTTP_IXR_CLIENT( 'http://localhost/wordpress/wordpress/xmlrpc.php' );

Затем попробуйте заменить:

$result = $rpc->query( 
 'pingback.extensions.getPingbacks',
 'http://localhost/wordpress/wordpress/2018/01/17/hallo-welt/&post_type=something'
);

на

$result = $rpc->query( 
 'pingback.extensions.getPingbacks',
 'http://localhost/wordpress/wordpress/2018/01/17/hallo-welt/?post_type=something'
);

Метод сервера wp_xmlrpc_server::pingback_extensions_getPingbacks() использует функцию url_to_postid() для преобразования URL в идентификатор поста. Убедитесь, что ваш URL работает там!

PS: В настоящее время многие пользователи WordPress изучают новую REST-API вместо XML-RPC API.

Ответ или решение

Проблема, изложенная в вашем вопросе, связана с использованием метода pingback.extensions.getPingbacks XML-RPC API для получения откликов с параметрами в URL. Вы сталкиваетесь с ошибкой, получая код ошибки 0 и пустую строку ошибки, что указывает на некорректное выполнение. Рассмотрим возможные причины и решения этой проблемы.

Понимание Проблемы

XML-RPC API принято использовать для удаленного взаимодействия с WordPress. Метод pingback.extensions.getPingbacks служит для получения списка пингбеков к указанному URL. Однако, обращение к этому методу с параметрами, такими как post_type или page, вызывает ошибку.

Возможные Рекомендации

  1. Проверьте Формат URL

    Ваша исходная попытка использовала амперсанд (&) вместо вопросительного знака (?) для добавления параметра в URL:

    'http://localhost/wordpress/wordpress/2018/01/17/hallo-welt/&post_type=something'

    Вместо этого используйте:

    'http://localhost/wordpress/wordpress/2018/01/17/hallo-welt/?post_type=something'
  2. Используйте Обновленные Классы

    WordPress предоставляет класс WP_HTTP_IXR_CLIENT, который расширяет возможности IXR_Client. Это общее улучшение, рекомендуется использовать его:

    require_once ABSPATH . WPINC . '/class-IXR.php';
    require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php';
    $rpc = new WP_HTTP_IXR_CLIENT('http://localhost/wordpress/wordpress/xmlrpc.php');
  3. Рассмотрение URL и Поста

    Убедитесь, что URL ведет к существующему посту или странице. Для этого WordPress использует функцию url_to_postid(). Если URL не разрешается в допустимый ID поста, метод будет давать сбой.

  4. Альтернативы: REST API

    XML-RPC API устаревает в пользу современных подходов. Рассмотрите возможность перехода на REST API. Этот интерфейс предлагает более гибкие и безопасные способы взаимодействия с WordPress. Дополнительная информация доступна на документации REST API.

Заключение

Тщательный анализ и подходящие изменения в структуре URL должны помочь в решении вашей проблемы. Если проблема связана с архитектурными ограничениями XML-RPC, переход на REST API может стать долговременным решением.

Если ваша проблема не решается после внесения этих изменений, рекомендуется проверить логи сервера или обратиться к специалистам для детальной диагностики. Надеюсь, это руководство окажется полезным и поможет вам успешно настроить ваш интерфейс с WordPress.

Оцените материал
Добавить комментарий

Капча загружается...