按自定义字段查询并按自定义字段分组

时间:2018-10-01 11:17:40

标签: php wordpress custom-fields

我有两个自定义字段,一个叫做movie,另一个叫year。我想查询wp,让我返回按年份分组的电影;我一年要看一部电影。

我在这里尝试过

function query_group_by_filter($groupby)
    {
    global $wpdb;
    return $wpdb->postmeta . '.meta_key = "year"';
    }

add_filter('posts_groupby', 'query_group_by_filter');
$movies = new WP_Query(array(
    'post_type' => 'post',
    'meta_query' => array(
        array(
            'key' => 'movies', // name of custom field
            'value' => "{$post_id}",
            'compare' => 'LIKE'
        )
    )
));
remove_filter('posts_groupby', 'query_group_by_filter');

但这不能解决我的错误吗?

+---------+----+---------+----------+-----------------------+--+
| post_id | id | meta_id | meta_key |      meta_value       |  |
+---------+----+---------+----------+-----------------------+--+
|       9 |  9 |      10 | movie    | 264                   |  |
|       9 |  9 |      12 | year     | a:1:{i:0;s:1:"1991";} |  |
|      10 | 10 |      13 | movie    | 264                   |  |
|      10 | 10 |      14 | year     | a:1:{i:0;s:1:"1991";} |  |
|      11 | 11 |      15 | movie    | 300                   |  |
|      11 | 11 |      16 | year     | a:1:{i:0;s:1:"2018";  |  |
|      13 | 13 |      17 | movie    | 300                   |  |
|      13 | 13 |      18 | year     | a:1:{i:0;s:1:"2018";  |  |
+---------+----+---------+----------+-----------------------+--+

我希望将电影和年份值分组并返回meta_value的值

9 movie 264
9 year 1991

13 movie 300
13 year 2018

1 个答案:

答案 0 :(得分:0)

要给出准确的答案,请提供足够的数据,确切的自定义字段以及要获得的特定结果。但是我怀疑您不需要其他过滤器,而需要尝试“按几个(两个或更多)自定义字段值查询帖子”。这是一篇有关该主题的好文章:https://rudrastyh.com/wordpress/meta_query.html