WordPress как клиент XML-RPC?

Я хочу синхронизировать изменения после публикации на двух сайтах. Испытательная среда, а не производство. Одно направление (сайт А на сайт Б, но не назад).

В основном я редактирую сообщение в своем локальном стеке тестов и тот же пост (часть набора тестовых материалов) на удаленном сервере должен быть обновлен с идентичной копией полученного контента.

Я знаю, что XML-RPC-сервер реализован в WordPress … Но сам WordPress не является клиентом XML-RPC, и я не знаю, как легко было бы превратить его в один (я обычно опасаюсь XML-ничего 🙂

Так что я должен идти с XML-RPC и реализовывать клиентские функции, или это не стоит времени, и я должен создать пользовательскую форму или что-то на удаленном сервере, чтобы поймать изменения?

Solutions Collecting From Web of "WordPress как клиент XML-RPC?"

WordPress уже имеет класс клиента XML-RPC. Он находится в том же файле, что и серверная часть: class-IXR.php находящаяся в wp-includes class-IXR.php .

Следующий код создаст новую запись. Вы можете обернуть это в функцию и прикрепить ее к save_post действия save_post / update_post . Чтобы синхронизировать обе части, вы можете проверить пост-slug или отправить тот же пост-id в сообщение во втором блоге.

 $rpc = new IXR_Client('http://second-blog-domain.tld/path/to/wp/xmlrpc.php'); $post = array( 'title' => 'Post Title', 'categories' => array('Category A', 'Category B'), 'mt_keywords' => 'tagA, tagB, tagC', 'description' => 'Post Content', 'wp_slug' => 'post-slug' ); $params = array( 0, 'username', 'password', $post, 'publish' ); $status = $rpc->query( 'metaWeblog.newPost', $params ); if(!$status) { echo 'Error [' . $rpc->getErrorCode() . ']: ' . $rpc->getErrorMessage(); exit(); }