WordPress as XML-RPC client?

时间:2011-05-01 作者:Rarst

我想同步两个网站上的帖子编辑。测试环境,而不是生产环境。单向(站点A到站点B,但不能向后)。

基本上,我在本地测试堆栈中编辑帖子,远程服务器上的同一帖子(测试内容集的一部分)应该更新为结果内容的相同副本。

我知道XML-RPC服务器是在WordPress中实现的。。。但是WordPress本身并不是一个XML-RPC客户端,我不知道把它变成一个客户端有多容易(我通常对XML任何东西都很谨慎:)

所以,我应该使用XML-RPC并实现客户端功能,还是不值得花时间,而是应该在远程服务器上构建自定义表单或其他东西来捕获更改?

1 个回复
最合适的回答,由SO网友:Roman 整理而成

WordPress已经实现了一个XML-RPC客户端类。它与服务器部件位于同一文件中:class-IXR.php 位于wp-includes.

下面的代码将生成一个新帖子。您可以将其包装在函数中,并将其附加到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();
}

结束

相关推荐

使用CDN Sync工具插件时出错

既然wp-supercache对CDN有了一些内置支持,我已经尝试使用CDN同步工具将文件初始上载到Cloudfront。但是,我在同步时出现了两组错误(我不得不使用强制上载,因为CDN同步工具认为我的所有文件都已上载)。cURL错误:无法从文件/应用程序中打开/读取本地数据(26)。但此错误实际上并没有阻止上载文件无法打开流:在/var/www/xxxxx/wp-content/plugins/cdn-sync-tool/lib/awssdk/lib/requestcore/requestcore中打开