Недавно я обновил свой сайт с использованием SSL, и все URI теперь называются «https: //».
Мой сайт разработан с Symfony 2 и смешивает установку WordPress внутри Symfony 2 web/wordpress
каталог.
Все регулярный доступ в порядке. Только один вопрос:
В моем Symfony 2 есть следующий фрагмент кода:
private function getRecentPosts($num = 4)
{
require_once 'wordpress/wp-includes/class-IXR.php';
$user = '11111';
$pwd = '22222';
$host='https://www.rsywx.net';
$script='/wordpress/xmlrpc.php';
$port=443;
$client = new \IXR_Client($host, $script, $port);
$params = array(0, $user, $pwd, $num);
$client->query('metaWeblog.getRecentPosts', $params);
$wp = $client->getResponse();
return $wp;
}
Когда мой сайт не упакован с https, приведенный выше код работает нормально. Но теперь он находится под https, приведенный выше код не работает. Если я брошу $client
переменная после query
вызов функции, она выдает ошибку вроде:
+error: IXR_Error {#256 ▼
+code: -32300
+message: "transport error - could not open socket"
Есть намеки? Нужно ли настроить мой WP?
Я просто избегал использования XMLRPC для решения этой проблемы.
В моем приложении Symfony 2 я просто использовал 2-ю базу данных для прямого доступа к основной базе данных WordPress. Это взлом, но это решает мою проблему на данный момент.
Проблема была в файле WP-включает / класса IXR.php, он не работает с HTTPS, вы должны также использовать класс-сор-HTTP-IxR-client.php . И не забудьте включить файл конфигурации сор-load.php.
Фрагмент кода будет:
private function getRecentPosts($num = 4)
{
include 'wordpress/wp-load.php';
require_once ABSPATH . WPINC . 'wordpress/wp-includes/class-IXR.php';
require_once ABSPATH . WPINC . 'wordpress/wp-includes/class-wp-http-ixr-client.php';$user = '11111';
$pwd = '22222';
//Deprecated
/*
$host='https://www.rsywx.net';
$script='/wordpress/xmlrpc.php';
$port=443;
$client = new \IXR_Client($host, $script, $port);
*/
$client = new WP_HTTP_IXR_CLIENT('https://www.rsywx.net/wordpress/xmlrpc.php');
$params = array(0, $user, $pwd, $num);
$client->query('metaWeblog.getRecentPosts', $params);
$wp = $client->getResponse();
return $wp;
}