2013-02-08 41 views
0

我正在構建一個WordPress的插件,我從XML提要中提取數據並使用wp_insert_post()函數發佈所有數據。該插件每小時執行一次,所以我必須阻止雙重帖子。只發布,如果它不存在

我試圖添加一個過濾器,並將XML feed中的post_date與Wordpress中的post_date進行比較(因爲我給該帖子提供了與XML相同的post_date),但它不起作用,我無法確定爲什麼..

這裏是我的代碼:

add_filter('posts_where', 'checkPosts'); //I add a filter 
    $query = new WP_Query('post_type=event'); // Make a query for the custom post_type 'event' 
    if(!$query->have_posts()) { //If it doesn't have any posts with the same post_date post it 
     $post_id = wp_insert_post($post); 
     wp_set_object_terms($post_id, $genres, 'genre'); 
    } 
    remove_filter('posts_where', 'checkPosts'); 

function checkPosts($where = '') { 
    $where .= " AND post_date = ".$post_date; 
    return $where; 
} 

有人能告訴我我的錯誤或者給我另一種技術,以防止相同的職位WordPress的?

回答

1

我不是特別熟悉Wordpress過濾器,但我不相信雙等號是有效的SQL。

試着改變你的過濾功能:

function checkPosts($where = '') { 
    $where .= " AND post_date = ".$post_date; 
    return $where; 
} 
+0

是的,這是有道理的,但不幸的是它沒有工作。如果我正確使用查詢,我不是100%確定,這是我第一次真正需要查詢。 – 2013-02-08 21:33:48

0

好了,所以如果有人試圖做同樣的事情,這是爲我工作。

我刪除了過濾器,因爲我不是100%確定如何使用他們,這都可以更快地實現/更容易用這種方法:

$query = new WP_Query('post_type=event&year='.$post_Y.'&monthnum='.$post_m.'&day='.$post_d.'&hour='.$post_H.'&minute='.$post_i); 
    if(!$query->have_posts()) { 
     $post_id = wp_insert_post($post); 
     wp_set_object_terms($post_id, array($venue_name), 'locatie'); 
    } 

只需填寫一年,monthnum等與您要使用的信息一起,就是這樣!

相關問題