Вопрос или проблема
Я хочу использовать метод 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
, вызывает ошибку.
Возможные Рекомендации
-
Проверьте Формат 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'
-
Используйте Обновленные Классы
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');
-
Рассмотрение URL и Поста
Убедитесь, что URL ведет к существующему посту или странице. Для этого WordPress использует функцию
url_to_postid()
. Если URL не разрешается в допустимый ID поста, метод будет давать сбой. -
Альтернативы: REST API
XML-RPC API устаревает в пользу современных подходов. Рассмотрите возможность перехода на REST API. Этот интерфейс предлагает более гибкие и безопасные способы взаимодействия с WordPress. Дополнительная информация доступна на документации REST API.
Заключение
Тщательный анализ и подходящие изменения в структуре URL должны помочь в решении вашей проблемы. Если проблема связана с архитектурными ограничениями XML-RPC, переход на REST API может стать долговременным решением.
Если ваша проблема не решается после внесения этих изменений, рекомендуется проверить логи сервера или обратиться к специалистам для детальной диагностики. Надеюсь, это руководство окажется полезным и поможет вам успешно настроить ваш интерфейс с WordPress.