0

我正在为 Wordpress 构建一个插件,我从 XML 提要中提取数据并使用 wp_insert_post() 函数发布所有这些数据。该插件每小时执行一次,因此我必须防止重复发布。

我尝试添加一个过滤器并将 XML 提要中的 post_date 与 Wordpress 中的进行比较(因为我给帖子提供了与 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 中出现相同的帖子吗?

4

2 回答 2

1

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

尝试更改您的过滤器功能:

function checkPosts($where = '') {
    $where .= " AND post_date = ".$post_date;
    return $where;
}
于 2013-02-08T21:24:00.510 回答
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');
    }

只需用您要使用的信息填写年份、月份等,就是这样!

于 2013-02-09T12:15:00.067 回答