如何在WordPress中过滤具有多个类别名称的帖子?

时间:2010-01-23 05:48:46

标签: database wordpress mysql

我正在尝试使用名为"Event Calendar 3"的Word Press插件。该插件允许您创建事件,然后将它们提供到Wordpress数据库中的SQL表中。但是,此插件不区分不同类型的事件,例如重复事件,一次性事件。

我的解决方案的开头是创建一个名为“重复事件”的类别,当我创建一个事件帖子时,也标记为重复事件。然后,我尝试构建一个查询,该查询将返回归类为“事件”的帖子,但也会排除“重复事件”。

$query = SELECT *
         FROM wp_posts p, wp_ec3_schedule s, wp_terms ts, wp_term_taxonomy t, wp_term_relationships r
WHERE p.ID = s.post_ID
AND r.term_taxonomy_id = t.term_taxonomy_id
AND ts.term_id = t.term_id
AND name != "Repeating"

问题是,具有“重复”类别的帖子也具有“事件”类别(它们必须在日历中显示)。因此,具有“重复”类别的帖子仍然显示,因为他们的类别“名称”不仅仅是“重复”,它也是“事件”!

Wordpress函数query_post()没有帮助,因为我不仅需要按类别(query_post()执行)进行过滤,而且我还需要能够指定由...返回的行查询只是那些在今天之后有开始日期的查询(wp_ec3_schedule表中有一个名为'start'的列,列出了事件的开始时间。)

有什么建议吗?

THX。

1 个答案:

答案 0 :(得分:1)

不确定我是否了解所有内容,但请看一下这个例子。这会列出{strong> my sitepost_id个帖子how-to,这些帖子属于database类别,但不在codeSELECT `object_id` AS PostID FROM `wp_term_relationships` AS r JOIN `wp_term_taxonomy` AS x ON x.`term_taxonomy_id` = r.`term_taxonomy_id` JOIN `wp_terms` AS t ON t.`term_id` = x.`term_id` WHERE x.`taxonomy` = 'category' AND `slug` = 'how-to' AND `object_id` NOT IN ( SELECT `object_id` FROM `wp_term_relationships` AS r JOIN `wp_term_taxonomy` AS x ON x.`term_taxonomy_id` = r.`term_taxonomy_id` JOIN `wp_terms` AS t ON t.`term_id` = x.`term_id` WHERE x.`taxonomy` = 'category' AND `slug` IN ( 'database', 'code' ) ); 类别中。< / p>

{{1}}