我有一个自定义的post类型,它有一个数组作为元数据。下面是它的内部外观wp_postmeta
桌子
meta\\u键:\\u允许的公司meta\\u值:a:2:{i:0;s:3:“275”;i:1;s:4:“8386”}显然_allowed_companies
meta是一个具有两个值的数组275
和8386
, 每个代表一个公司的职位ID。
在前端,我希望显示由允许的公司过滤的项目列表。如果我选择公司275
然后单击提交,然后单击275
在…内its _allowed_companies
将显示meta。
这是我尝试过但徒劳的:(下面的代码使用_item_type
和_item_allowed_companies
. _item_type
是一个简单的字符串,工作正常,但问题是_item_allowed_companies
.)
$item_type = \'Assets\';
$allowed_company = 275;
$meta_array = array();
$meta_array = array( \'relation\' => \'AND\' );
if( $item_type ) $meta_array[] = array( \'key\' => \'_item_type\', \'value\' => $item_type, \'compare\' => \'=\' );
if( $allowed_company ) $meta_array[] = array( \'key\' => \'_item_allowed_companies\', \'value\' => $allowed_company, \'compare\' => \'IN\' );
$args = array(
\'post_type\' => \'item\',
\'post_status\' => \'publish\',
\'posts_per_page\' => $posts_per_page,
\'paged\' => $paged,
\'meta_query\' => $meta_array
);
我认为
compare
操作员
IN
在这里是错误的,但不知道如何改变它。
最合适的回答,由SO网友:Udit Desai 整理而成
你可以利用REGEXP
操作员输入META_COMPARE
.
例如:
$meta_array[] = array(
\'key\' => \'_item_allowed_companies\',
\'value\' => $allowed_company,
\'compare\' => \'REGEXP\'
);
$args = array(
\'post_type\' => \'item\',
\'post_status\' => \'publish\',
\'posts_per_page\' => $posts_per_page,
\'paged\' => $paged,
\'meta_query\' => $meta_array
);
参考文献: