我有一个自定义的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
);
参考文献: