仅在尚不存在的情况下发布

时间:2013-02-08 21:00:34

标签: php mysql database wordpress duplicates

我正在为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中相同的帖子吗?

2 个答案:

答案 0 :(得分:1)

我对Wordpress过滤器并不是特别熟悉,但我不认为双等号是有效的SQL。

尝试更改过滤功能:

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

答案 1 :(得分: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');
    }

只需在年份,月份等中填写您想要使用的信息即可!