按元键和值查询

时间:2014-11-09 作者:Dongsan

我有一个自定义的post类型,它有一个数组作为元数据。下面是它的内部外观wp_postmeta 桌子

meta\\u键:\\u允许的公司meta\\u值:a:2:{i:0;s:3:“275”;i:1;s:4:“8386”}_allowed_companies meta是一个具有两个值的数组2758386, 每个代表一个公司的职位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 在这里是错误的,但不知道如何改变它。

1 个回复
最合适的回答,由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
);
参考文献:

结束

相关推荐