我很抱歉事先有任何混淆,我只有2天与WP。
所以,我使用Advanced Custom Fields 向partucular类型的帖子添加可格式化的自定义字段。其中一个字段是带有名称的多项选择的复选框spec
.现在我想得到所有的帖子spec
已选中一个或多个值。
例如:此字段的选项是{“choice1”、“choice2”、“choice3”、“choice4”、“choice5”},在一些帖子中,我选择了“choice2”和“choice3”并保存了这些帖子。
如果我打印spec
在回路中
print_r( get_post_meta($post->ID,\'spec\',true));
它可能看起来像:
Array
(
[0] => choice2
[1] => choice3
)
现在我想获得所有选择了“choice2”或“choice3”的帖子(或者可能只有
choice2
或仅限
choice3
):
query_posts(
array(
\'cat\' => 6,
\'posts_per_page\'=>-1,
\'meta_query\' => array(
array(
\'key\' => \'spec\'
\'value\' => array(\'choice2\',\'choice3\'),
\'compare\' => \'IN\'
)
)
)
);
但这行不通。据我所知,实际情况是
WHERE spec IN \'choice2\'
, 其中选择是数组。但我需要相反的条件
in_array(\'choice2\',spec) || in_array(\'choice3\',spec)
. 可能有一些
HAS
的值
compare
?
那么我的问题是,我如何才能得到所有的帖子,其中带有多项选择的元字段有几个值被检查?
最合适的回答,由SO网友:pcarvalho 整理而成
您是否尝试过这样打电话:
$args = array(
\'post_type\' => \'product\',
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'key\' => \'spec\',
\'value\' => \'choice2\',
\'compare\' => \'LIKE\',
),
array(
\'key\' => \'spec\',
\'value\' => \'choice3\',
\'compare\' => \'LIKE\',
),
),
);
$query = new WP_Query( $args );
示例取自straigh
codex