【发布时间】:2018-04-02 08:31:14
【问题描述】:
我想有人帮助我。
我的第一个问题:数组中的 meta_value 在我的函数中不起作用:
'value' => array('English','Spain','German','French'),
它适用于单个值,但数组中的更多值不起作用。 它只是忽略了我的数组。
我的第二个问题:我想按排序顺序列出项目:“English”、“Spain”、“German”、“French”,然后按“ratings_score”排序,然后按“修改”排序。 但根据国家我只能按字母顺序列出。在这一行中,我想列出“English”、“Spain”、“German”、“French”,但忽略它。
有人可以帮我解决问题吗?
这是我的功能:
function ta_modify_main_query($query) {
if ( $query->is_main_query() && ( $query->is_home() || $query->is_search() || $query->is_archive() ) ) {
{
$query->set('meta_query', array(
'country' => array(
'key' => 'country',
'value' => array('English','Spain','German','French'),
),
'ratings_score' => array(
'key' => 'ratings_score',
),
));
$query->set('orderby',array(
'country' => 'ASC',
'ratings_score' => 'DESC',
'modified' => 'DESC'
));
}
return $query;
}
}
add_action( 'pre_get_posts', 'ta_modify_main_query' );
【问题讨论】:
-
它会返回任何东西还是只是订单不起作用?如果它没有返回任何内容,请尝试添加
'compare' => 'IN':array( 'country' => array( 'key' => 'country', 'value' => array('English','Spain','German','French'), 'compare' => 'IN' ), -
嗨奥马尔!有或没有 'compare' => 'IN' 它会返回任何东西,使用 'compare' => 'LIKE' 或 'REGEXP' 它会返回帖子,但订单不起作用
-
您可以尝试将
'relation' => 'AND'添加到meta_query吗?您想为'ratings_score'获取什么值? -
你好奥马尔。该数组现在可以使用,但仅按字母顺序排列。您知道如何按优先级等自定义顺序列出此数组。
-
我添加了我的答案..关于 orderby,我认为不可能在 pre_get_posts 操作中按照您想要的方式设置它。您可以构建自己的 SQL 语句,也可以创建另一个数字元键示例“country_order”并将其设置为例如 1 用于英语帖子,2 用于西班牙语帖子等。然后将 orderby 设置为这个新的元键。