我使用了Events Manager插件,它创建了一个自定义的“event”post类型和一个名为“event categories”的自定义分类法。
我有一个ID为43的“课程”类别。我还有许多儿童类别的课程,如“科学”、“英语”等。
我正在创建一个自动完成搜索,需要根据搜索词查询课程,但仅限于出现在“事件类别”分类法“事件的帖子类型”中并标记有“课程”类别或其任何子类别的帖子。
以下是我目前掌握的情况:
global $wpdb, $table_prefix;
$em_suggestions = $wpdb->get_results("
SELECT post_name as value, post_title as label
FROM {$table_prefix}posts
WHERE post_type = \'event\'
AND post_status = \'publish\'
AND post_title LIKE \'%$term%\'
ORDER BY post_title ASC
LIMIT 0, 10
");
我只是在努力将分类法过滤器应用到它。
最合适的回答,由SO网友:Adnan 整理而成
tax\\u query用于获取与特定分类法关联的帖子。
使用taxonomy slug 从版本3.1起,已弃用,支持“tax\\u query”税务查询(数组)–使用分类参数(3.1版提供)<分类学(分类法)字段(字符串)–按(\'id\'或\'slug\')选择分类术语(int/string/array)–分类术语包括\\u子级(布尔值)–是否包括用于层次分类的子级。默认为true运算符(字符串)–要测试的运算符。可能的值为“IN”、“NOT IN”、“AND”$args = array(
\'post_type\' => \'event\',
\'posts_per_page\' => -1,
\'tax_query\' => array(
array(
\'taxonomy\' => \'event-categories\',
\'field\' => \'id\',
\'terms\' => 43
)
)
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post;
// do something
}
}