WP_Query未正确排序

时间:2017-02-07 17:15:18

标签: php wordpress wordpress-theming custom-post-type shortcode

我有一个自定义帖子类型cota,其中所有数据都显示在我网站的<table>中。我需要通过以下方式订购此表:

  • administradora - 用户指定的某种“类别”。订购ASC(a-z);
  • valor - cota的价格。每个cota都有一个价格。订购DESC(9 - 0);

问题:它已由administradora订购,但未由valor正确排序。

示例:valor的订单首先显示cota美元9.000,00美元,然后显示另一个cota美元1.000.000,00美元。这是不对的。一百万美元cota应首先出现,然后是九千美元cota

Here's an image that shows better the situation

订购cota

的代码
      $query = new WP_Query( array(
      'post_type' => 'cota',
      'posts_per_page' => -1,
      'tax_query' => array(
          array(
              'taxonomy' => 'tipo',
              'field'    => 'slug',
              'terms'    => $atts['tipo'],
          ),
      ),
      'orderby' => 'meta_value_num',
      'meta_query' => array(
        'relation' => 'AND',
        'valor_clause' => array(
          'key' => 'valor',
          'compare' => 'EXISTS'
        ),
        'adm_clause' => array(
          'key' => 'administradora',
          'compare' => 'EXISTS'
        )
      ),
      'orderby' => array(
        'adm_clause' => 'ASC',
        'valor_clause' => 'DESC'
      )
    )
  );

编辑1 :经过一番研究,我发现wordpress将其所有数据保存为数据库中的longtext。但仍然无法解决问题。

如果需要,我可以提供更多信息。

2 个答案:

答案 0 :(得分:0)

尝试以下代码:

$query = new WP_Query( array(
  'post_type' => 'cota',
  'posts_per_page' => -1,
  'tax_query' => array(
      array(
          'taxonomy' => 'tipo',
          'field'    => 'id',
          'terms'    => $atts['tipo'],
      ),
  ),
  'orderby' => 'meta_value_num',
  'meta_query' => array(
    'relation' => 'AND',
    'valor_clause' => array(
      'key' => 'valor',
      'compare' => 'EXISTS'
    ),
    'adm_clause' => array(
      'key' => 'administradora',
      'compare' => 'EXISTS'
    )
  ),
  'orderby' => array(
    'adm_clause' => 'ASC',
    'valor_clause' => 'DESC'
  )
)
);

答案 1 :(得分:0)

<强>解决

以下代码应该有效:

      $query = new WP_Query( array(
      'post_type' => 'cota',
      'posts_per_page' => -1,
      'tax_query' => array(
          array(
              'taxonomy' => 'tipo',
              'field'    => 'slug',
              'terms'    => $atts['tipo'],
          ),
      ),
      'meta_query' => array(
        'relation' => 'AND',
        'credito_clause' => array(
          'key' => "valor",
          'orderby' => 'meta_value_num',
          'type' => 'DECIMAL',
          'compare' => 'EXISTS'
        ),
        'adm_clause' => array(
          'key' => 'administradora',
          'compare' => 'EXISTS'
        )
      ),
      'orderby' => array(
        'adm_clause' => 'ASC',
        'credito_clause' => 'DESC'
      )
    )
  );