我正在为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中相同的帖子吗?
答案 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');
}
只需在年份,月份等中填写您想要使用的信息即可!