web-dev-qa-db-ja.com

組み合わせて複数の値で投稿を並べ替える

Sample Image for sorting reference

この画像では、

1.黒字はデフォルトの投稿タイトルです

2. 'of'の前の数字はカスタムフィールドです。

.年の後の数字は投稿の公開年です

今、私はタイトルのアルファベット順に従ってこれをソートしたいです。したがって、この場合、C、D、D、L)になります。

同時に、私はそれを年ごとにソートしたいと思います。そのため、 'D'で始まるすべての投稿は投稿年でソートされる必要があります。

また、 'of'の前にくる数字は、その年の昇順で並べ替える必要があります。

以下のコードチャンクは動作しませんでした

 $args = array(
         'posts_per_page' => 30,
         'category__in' => $idObj,
         'paged' => $paged,
         'meta_query' => array(
                         'relation'    => 'AND',
                         'custom_key' => array(
                                         'key' => 
                                         'original_act_ordinance_information_0_act_ordinance_number',
                                         'compare' => 'EXISTS',
                                         'type'    => 'NUMERIC',
                                          ),
                         ),
         'orderby' => array(
                      'title' => 'ASC',
                      'post_date' => 'DESC',
                      'custom_key' => 'ASC',
                      ),
         );

私はどこでミスを犯していますか?そしてこれを達成するための解決策はありますか?

編集:

Alphabetically sorted

だから基本的に私はこれが欲しい...

そのため、この画像はアルファベット順、すべての投稿は最新の年から最古の年の順に並べ替える必要があります。その間、同じ年に複数の投稿があるとします。)。 2016年の23日と2016年の18日。それらを昇順)で並べるようにします。

結論として、私は投稿を注文したいです。

  1. アルファベット順

  2. (アルファベット順)

  3. (年次以内に)

同時に。

平和な世界では、ソートされた投稿は次のようになります。

What exactly I wanted

2
Murshid Ahmed

私はあなたが達成しようとしている順序で完全に100%ではありません、しかし私はあなたがWP_Queryのためのドキュメンテーションをもう少し過ごす必要があると思います。 orderby配列は、キーとしてwp_postsテーブルOR meta_valueまたはmeta_value_num内の列の名前、notカスタムフィールドキーの名前を取ります(あなたの場合はcustom_key)。カスタムフィールドの実際の名前は、args配列でmeta_keyとして定義されています。

コーデックスの Orderbyパラメータの最後の2つの例 を見ると、これがどのように機能するかがわかり、それを状況に適用できます。これはテストされていませんが、あなたに一般的な考えを与えます:

$args = array(
    'posts_per_page' => 30,
    'category__in' => $idObj,
    'paged' => $paged,
    'meta_query' => array(
        array(
            'key' => 'original_act_ordinance_information_0_act_ordinance_number',
            'compare' => 'EXISTS',
            'type'    => 'NUMERIC',
         ),
     ),
     'orderby' => array(
         'title' => 'ASC',
         'post_date' => 'DESC',
         'meta_value_num' => 'ASC',
     ),
     'meta_key' => 'original_act_ordinance_information_0_act_ordinance_number',
 );

あなたはまたあなたのmeta_queryが間違って設定されていたので、私はあなたがWP_Queryドキュメントのその部分を同様にレビューすることを勧めます。

1
brianjohnhanna