2012-12-09 33 views
3

我使用Wordpress XML-RPC自動發佈到我的博客,並且我從PHP獲得了這兩個函數:wp.newPost和wp.uploadFile。但是,當我在一個php腳本中運行它們時,如下所示:(只包括重要部分)即使attachment_id存在,但我嘗試發佈時,Wordpress未從wp.uploadFile中檢測attachment_id。使用Wordpress XML-RPC wp.uploadFile和wp.newPost從PHP

//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); 

當我嘗試上面的代碼運行我得到:「Fault代碼404 faultString無效的附件ID。」

我驗證了wp.uploadFile圖像已被上傳成功及其在WordPress圖書館顯示。事實上,如果我再次運行腳本,只需使用與wp.uploadFile返回的完全相同的attachement_id替換'post_thumbnail'值,它就可以工作!

所以,顯然Wordpress沒有檢測到圖像已經上傳,如果我結合如上所示運行這兩個函數。有沒有解決這個問題的方法?我真的很討厭在我自己的數據庫中存儲WordPress的附件ID。

回答

2

通過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); 

希望這有助於! (我現在堅持附加圖像張貼)

+0

我得到它的工作,這是一個問題是我的正則表達式。還是要謝謝你的幫助。 – Walter

+0

您是否正在使用允許您將圖片附加到帖子的主題?如果是這樣,手動將圖像附加到帖子上,然後檢查meta_key在wp_postmeta表中,然後在$ data的custom_fields中以這種格式使用該密鑰:$ data = array('custom_fields'=> array(array('key' =>'meta_key_name','value'=>'您的圖片網址')); – Walter

+0

Walter - 謝謝,我需要附加圖片以便它們在媒體庫中顯示爲'附加':我需要帖子父列顯然,從我昨晚的最後一次閱讀中,它不適用於當前版本的wp(3.4.2) – jrgd