wordpress - 附加图像以在 Wordpress XMLRPC 中发布

标签 wordpress xml-rpc

我正在使用 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。
我用于带有特色图片的新帖子的流程是这样的:

  • 使用 newPost 功能并发布没有特色的内容
    image并将publish设置为false,记录返回的post_id
  • 上传图片并将post_id设置为帖子的id
    发帖,记录image_id
  • 完成后编辑帖子并将 wp_post_thumbnail 设置为等于
    您刚刚上传的 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/

    相关文章:

    php - 尝试在 kitematic 上为 docker 设置 lamp 和 wordpress

    php - 在 Woocommerce 结账时添加总折扣券金额

    ruby - 如何摆脱 ruby​​ 的警告 : already initialized constant

    javascript - 最好的 Javascript XML-RPC 客户端库是什么?

    html - 鼠标悬停时下拉列表消失

    Wordpress Index.php 未加载

    php - WooCommerce 购物车数量基础折扣

    java - 优化器导致的段错误

    android - Magento API 的创建发票方法无法正常工作

    python - 无法使用 Python xmlrpc 在 aria2 中添加选项?