【发布时间】:2016-02-17 22:29:39
【问题描述】:
这应该很容易解决,我认为与我使用 LIKE 有关,但我就是只见树木不见森林!
我定义了一个名为 COURSES 的自定义帖子类型 (CPT)。使用高级自定义字段 (ACF),COURSES CPT 有一个名为 TEACHERS 的列。 ACF 在 TEACHERS 列中存储了大量数据,包括每位教师的唯一 ID。
$_SESSION['search_teachers'] 由表单中的多选字段填充,并包含我要搜索 TEACHERS 列的教师 ID。它可以包含任意数量的教师 ID。
这是我目前所拥有的:
$teachers = implode($_SESSION['search_teachers'],',');
$args_courses = array(
'post_type' => 'courses',
'posts_per_page' => 9999,
'meta_query' => array(
array(
'key' => 'active',
'value' => 1,
'compare' => '='
),
array(
'key' => 'teachers',
'value' => $teachers,
'compare' => 'LIKE'
)
),
'orderby' => 'course_name',
'order' => 'ASC'
);
请注意我正在使用:
'key' => 'active', 'value' => 1, 'compare' => '='
在我的 WP_query 中过滤课程是否当前处于活动状态。
如果 $_SESSION['search_teachers'] 仅包含 1 个教师 ID,我的 WP_query 工作正常。当 $_SESSION['search_teachers'] 包含多个教师 ID 时,如何使其工作?
提前感谢您的帮助!
编辑: 这是我的教师专栏中包含的内容:
a:3:{i:0;s:3:"509";i:1;s:3:"511";i:2;s:3:"514";}
这就是我的 $_SESSION['search_teachers'] 中包含的内容:
Array ( [0] => 511 [1] => 514 )
【问题讨论】:
-
想想你的查询会做什么:它会生成
WHERE .. teachers LIKE 'teacher1,teacher2'。你可能想要IN。 -
或者,您可以尝试使用
EXISTS。 -
@Kenney:这种事情有
find_in_set(),但效率不高。
标签: php mysql wordpress session sql-like