php - 从 PHP 使用 Wordpress XML-RPC wp.uploadFile 和 wp.newPost

标签 php wordpress xml-rpc

我正在使用 Wordpress XML-RPC 自动发布到我的博客,我从 PHP 获得了这两个功能:wp.newPost 和 wp.uploadFile。

但是,当我在一个 php 脚本中运行它们时,如下所示:(仅包含重要部分)当我尝试发布时,即使存在 attachment_id,Wordpress 也没有从 wp.uploadFile 中检测到 attachment_id。

//wp.newPost content
$content = array(
'post_title' => $title,
'post_content' => $body,
'post_status' => 'publish', 
'post_type' => 'products',
'post_thumbnail' = // wp.uploadFile is called here that returns attachement id
);

$this->Curl->post($url,$content);

当我尝试运行上面的代码时,我得到:“faultCode 404 faultString 附件 ID 无效。”

我确认 wp.uploadFile 图像已成功上传并显示在 Wordpress 库中。事实上,如果我再次运行该脚本并将“post_thumbnail”值替换为 wp.uploadFile 返回的完全相同的 attachement_id,它就可以工作!

因此,如果我如上所示同时运行这两个函数,显然 Wordpress 没有检测到图像已上传。有什么解决办法吗?我真的不想将 Wordpress 附件 ID 存储在我自己的数据库中。

最佳答案

通过 xmlrpc 发布我正在使用 IXR

require_once("IXR_Library.php.inc");

下面是我正在使用的;它肯定需要一些编辑,但可能会给你一些线索

上传新文件:

$file_upload_path = get_post_meta ( $image->ID,'_wp_attached_file', false);
$file_path = $_SERVER['DOCUMENT_ROOT']."/dev/0.2/wp-content/uploads/".$file_upload_path[0];
$path_parts = pathinfo($file_path);
$file_name = $path_parts['filename'].'.'.$path_parts['extension'];
$data = array(
  'name'  => $file_name ,
  'type'  => $image->post_mime_type ,
  'bits'  => new IXR_Base64( file_get_contents( $file_path ) ) ,
  'overwrite' => true
);
$status = $rpc->query(
    'wp.uploadFile', 
    '1',
    $username,
    $password,
    $data
);
$image_returnInfo = $rpc->getResponse();

创建新帖子:

$data = array(
    'post_title' => $post->post_title,
    'post_content' => $post->post_content . $attachement_string_hack,
    'post_type' => 'product',
    'post_status' => 'publish',
    'dateCreated' => (new IXR_Date(time())),
    'post_thumbnail' => $image_returnInfo['id']
);
$rpc = new IXR_Client( $rpc_url );
$res = $rpc->query('wp.newPost', '', $username, $password, $data, 0);

希望对您有所帮助! (我现在坚持附加图片发布)

关于php - 从 PHP 使用 Wordpress XML-RPC wp.uploadFile 和 wp.newPost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784322/

相关文章:

php - 如何将 SQL 查询转换为 CakePHP?

php - DB_DataObject 和 PDO

php - 无限滚动启用(wordpress)

python - 如何在 Odoo 12 中使用 Python XML-RPC 注册支付

php - 使用 eval() 按 WordPress 的多个条件对多数组进行排序

php - 检查数据库中的现有条目或重新创建表?

php - 无法连接MySQL : (1045) Access denied for user 'root' @'localhost' (using password: YES)

php - 在类别页面中显示最低的简单产品价格

python - 允许使用 xmlrpc 在字符串中传输任何 ASCII 字符

javascript - 在 JavaScript 中将 XML-RPC 转换为 JSON