0

我一直在尝试取消查询,但我无法做到。我想查询“语言环境”类别中的所有帖子。然后按自定义字段值“provincia”对它们进行排序,然后按自定义字段值“localidad”对它们进行排序。我不知道我是否清楚,我需要对例如美国的所有“语言环境”进行排序,然后再按所有州对它们进行排序。我见过很多把戏,但没有人奏效。

我想我越接近是这样的:

$entradas = new WP_Query( array (
    'post_type'      => 'post',
    'category_name'      => 'locales',
    'meta_query' => array(
             array(
                     'key' => 'provincia'
                     ),
             array(
                     'key' => 'localidad'
             )
         ),
    'orderby' => 'meta_value meta_value',
    'order' => 'ASC',
    'nopaging' => true,
    'posts_per_page' => -1
));

但它当然行不通。有谁知道解决方案?帮我!

谢谢!

4

1 回答 1

0

为此,您需要调用自定义查询:

$querystr = "
    SELECT * FROM $wpdb->posts p
    LEFT JOIN $wpdb->postmeta pm1 ON p.ID = pm1.post_id
    LEFT JOIN $wpdb->postmeta pm2 ON p.ID = pm2.post_id
    LEFT JOIN $wpdb->term_relationships tr ON (p.ID = tr.object_id)
    LEFT JOIN $wpdb->term_taxonomy tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
    LEFT JOIN $wpdb->terms t ON (tt.term_id = t.term_id)
    WHERE t.name = 'locales'
    AND tt.taxonomy = 'category'
    AND p.post_status = 'publish'
    AND p.post_type = 'post'
    AND pm1.meta_key = 'provincia'
    AND pm2.meta_key = 'localidad'
    ORDER BY  pm1.meta_key,pm2.meta_key" ASC";
于 2014-11-29T04:09:28.923 回答