我正在使用 XMLRPC 向 Wordpress 发帖。我在发布缩略图时遇到问题,在调试 wordpress 代码后,我发现我的问题是由图像未附加到帖子中引起的。
我必须在不修补 wordpress 或使用 PHP 的情况下执行此操作,仅使用 XMLRPC。
我可以上传图像并获取图像的 ID。
另一点让我感到困惑的是,您如何将图片附加到您尚未发布的帖子中,因为您正在等待图片上传?我应该上传图片然后发布,然后使用图片 ID 和帖子 ID 更新图片元数据?
编辑:wordpress 中有问题的代码是这个检查
if ( $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'thumbnail' ) )
我的假设是它失败,因为图像未附加,如果我修复该代码一切正常,但我无法修补我的应用程序用户的 WP(所以这不是解决方案)
最佳答案
是的,可以这样做,如果 Wordpress 版本是 3.5 或更高版本,则在使用上传文件/图像的代码时,您可以设置 post_id。
我用于带有特色图片的新帖子的流程是这样的:
image并将publish设置为false,记录返回的post_id
此
发帖,记录image_id
您刚刚上传的 image_id 并将发布设置为 true(如果需要)
重要的:
mime 类型很重要,它必须是“image/jpg”或“image/png”,请参阅文档,如果 mime 类型被磨损,如“jpg”附加将失败。
提示:
对于调试,如果您从 wordpress 收到一般错误并且您无法弄清楚为什么可以检查 wordpress 代码甚至对其进行编辑,添加调试/跟踪调用,希望您能找出原因。
这是一个带有类别、图像和标签的帖子示例。它需要类-IXR.php
https://github.com/WordPress/WordPress/blob/master/wp-includes/class-IXR.php
和 mime_content_type 函数
https://github.com/caiofior/storebaby/blob/master/magmi/plugins/extra/general/socialnotify/wp/mimetype.php
$client = new IXR_Client($url);
$content = array(
'post_status' => 'draft',
'post_type' => 'post',
'post_title' => 'Title',
'post_content' => 'Message',
// categories ids
'terms' => array('category' => array(3))
);
$params = array(0, $username, $password, $content);
$client->query('wp.newPost', $params);
$post_id = $client->getResponse();
$content = array(
'name' => basename('/var/www/sb/img.jpeg'),
'type' => mime_content_type('/var/www/sb/img.jpeg'),
'bits' => new IXR_Base64(file_get_contents('/var/www/sb/img.jpeg')),
true
);
$client->query('metaWeblog.newMediaObject', 1, $username, $password, $content);
$media = $client->getResponse();
$content = array(
'post_status' => 'publish',
// Tags
'mt_keywords' => 'tag1, tag2, tag3',
'wp_post_thumbnail' => $media['id']
);
$client->query('metaWeblog.editPost', $post_id, $username, $password, $content, true);
关于wordpress - 附加图像以在 Wordpress XMLRPC 中发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17722743/