如何使用wp post元查询IN运算符比较序列化数组?

时间:2018-03-16 04:57:03

标签: wordpress

你能帮我吗?如何使用wp post元查询的IN比较运算符来比较post meta key中的序列化数组值? 序列化数组是数字,我想使用.container { width: 100px; height: 100px; overflow: scroll; }来比较值。 感谢。

1 个答案:

答案 0 :(得分:0)

首先,您无法对序列化数据运行IN检查,因为Mysql将其视为字符串。但是,您可以运行LIKE查询以检查值是否在那里。

以下可能不是一个完美的解决方案,但它应该可以解决问题。

if (count($attribute) == 1) {
    $query['ps_attributes_array_check'] = array( 'key' => 'ps_attributes_array_check', 'value' => "\"$attr\"", 'compare' => 'LIKE' );
} else if (count($attribute) > 1) {
    $query['ps_attributes_array_check']['relation'] = 'OR';
    foreach($attribute as $attr) {
        $query['ps_attributes_array_check'][] = array( 'key' => 'ps_attributes_array_check', 'value' => "\"$attr\"", 'compare' => 'LIKE' );
    }
}

<强>更新: 如果将属性ID保存在单独的行中而不是序列化数据,则可以运行以下查询:

'meta_query' => array(
    array(
        'key' => 'ps_attributes_array_check',
        'value' => $attribute,
        'compare' => 'IN'
    )
)