WP_查询 |数组序列化形式的 meta_query 参数元值

Posted

技术标签:

【中文标题】WP_查询 |数组序列化形式的 meta_query 参数元值【英文标题】:WP_Query | meta_query argument meta value in array serialize form 【发布时间】:2021-04-02 17:37:45 【问题描述】:

简而言之,我想从 usermeta 表中获取元值,但元值是序列化数组形式, 这些值实际上是 post id,这是我的单个元值的工作代码,我想要 meta_value 中的序列化数组中的多个值

 $user_id = get_current_user_id(); 
         $key = 'classes'; 
         $single = true; 
         $user_last = get_user_meta( $user_id, $key, $single ); 
         $user_last; 


    $query_args = array(
        'posts_per_page' => $output,
        'post_status' => 'publish',
        'post_type' => 'stm-courses',
        'meta_query'    => array(
                                array(
                                    'key' => 'classes',
                                    'value' => $user_last,
                                    'compare' => 'LIKE'
                                )
                            )
    );
    print_r( $query_args ); echo "string";

单个元值工作正常,但不是多个值

下面是上述查询的输出

Array ( [posts_per_page] => 3 [post_status] => publish [post_type] => stm-courses [meta_query] => Array ( [0] => Array ( [key] => classes [value] => Array ( [0] => 5033 [1] => 5034 ) [compare] => LIKE ) ) ) string

在数据库中,meta_key 类的值是这样存储的

a:2:i:0;s:4:"5033";i:1;s:4:"5034";

这些值是动态变化的,所以我需要一些动态逻辑, 在此先感谢,请建议我如何做到这一点

【问题讨论】:

【参考方案1】:
$meta_query[] = array(
  'key'     => 'classes',
  'value'   => sprintf('"%s"', $user_last),
  'compare' => 'LIKE',
);

【讨论】:

请在您的答案中添加一些解释,以便其他人可以从中学习

以上是关于WP_查询 |数组序列化形式的 meta_query 参数元值的主要内容,如果未能解决你的问题,请参考以下文章

在c#中为wp7反序列化字符串数组

MySql 查询或合并数组为 1

如何使用 PHP 序列化数组(数组到查询字符串)

BZOJ_3110_[Zjoi2013]K大数查询_整体二分+树状数组

[bzoj2058][Usaco2010 Nov]Cow Photographs_树状数组_动态规划

使用范围简化数组查询