我正在尋找一個解決方案,在那裏我可以通過元信息更新帖子,而不是通過id。WordPress的 - 更新發布元信息
我通過jsonp從外部資源獲取了我的內容。我將內容保存到數據庫中。
我發現的唯一方法是,通過id更新帖子 - 但我沒有ID。我擁有的是來自其他資源的文章ID。我將這篇文章ID保存爲每個wp文章的元信息。
那麼,有沒有什麼辦法,通過它的元信息更新帖子?
我正在尋找一個解決方案,在那裏我可以通過元信息更新帖子,而不是通過id。WordPress的 - 更新發布元信息
我通過jsonp從外部資源獲取了我的內容。我將內容保存到數據庫中。
我發現的唯一方法是,通過id更新帖子 - 但我沒有ID。我擁有的是來自其他資源的文章ID。我將這篇文章ID保存爲每個wp文章的元信息。
那麼,有沒有什麼辦法,通過它的元信息更新帖子?
好吧, 這裏是一些代碼,我做了什麼現在:
public function saveArticleInWpDatabase($json_data){
for ($i = 0; $i < count($json_data); $i++) {
$articleId = $json_data[$i]['articleId'];
$img = $json_data[$i]['img'];
$articleHeadline = $json_data[$i]['articleContent']['headline'];
$articleContent = $json_data[$i]['articleContent']['content'];
$termsInput = $json_data[$i]['articleContent']['terms'];
$terms = explode(',',$termsInput);
$creationDate = $json_data[$i]['articleCreationDate'];
$modifiedDate = $json_data[$i]['articleModifiedDate'];
//Check if post with article ID in postmeta exists
$existingId = $this->wpdb->get_var("SELECT post_id FROM ".$this->wpdb->postmeta." WHERE (meta_key = 'article_id' AND meta_value = '".$articleId."')");
//Posts doesn't exist
if ($existingId == null) {
$my_post = array(
'post_date' => $creationDate,
'post_modified' => $modifiedDate,
'post_title' => $articleHeadline,
'post_content' => $articleContent,
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(0, $categoryId)
);
$last_id = wp_insert_post($my_post);
add_post_meta($last_id, 'article_id', $articleId, true);
wp_set_post_categories($last_id, array(0,$categoryId), true);
wp_set_post_terms($last_id,$terms, 'post_tag', true);
//$this->_import_photo($last_id, $img);
}
//Post exists
else{
$my_post = array(
'ID' => $existingId,
'post_date' => $creationDate,
'post_modified' => $modifiedDate,
'post_title' => $articleHeadline,
'post_content' => $articleContent,
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(0, $categoryId)
);
//Get last modified date and compare it with the new one
$lastUpdate = $this->wpdb->get_var("SELECT post_modified FROM " . $this->wpdb->posts . " WHERE ID = ".$existingId);
if(strcmp($lastUpdate, $modifiedDate) != 0){
var_dump("Update article with id: " . $existingId);
$last_id = wp_update_post($my_post);
}
else{
var_dump("Article: " . $existingId . " Nothing changed");
}
}
}
}
正如你所看到的,我保存了獨特的文章編號,從其他CMS如果文章不存在。
如果帶有meta_key:article_id和當前值的文章存在,我檢查修改日期是否相同。如果不是,我會更新帖子。
我每分鐘通過一個unix cron作業調用這個函數。但我認爲,這不是最好的方式(性能)(太多的數據庫請求?)。
另一個想法是,post_modified值總是與post_date相同,但我在json中得到了兩個不同的值。
例如
"articleCreationDate": "2012-05-21 14:38:29", "articleModifiedDate": "2016-02-11 14:52:01"
但它只在兩列(post_date,post_modified)中保存了articleCreationDate。
那麼,有沒有人有更好的解決方案或想法?有沒有人知道,爲什麼它不保存從我的JSON修改日期值?
乾杯
歡迎來到SO。請閱讀[如何提問](http://stackoverflow.com/help/how-to-ask)併發布相關代碼,以便人們可以幫助您。 –