web-dev-qa-db-de.com

Beiträge nach mehreren Werten sortieren, kombiniert

 Sample Image for sorting reference 

In diesem Bild

1. Die schwarzen Buchstaben sind Standardbeitragstitel

2. Die Zahl vor dem 'von' ist ein benutzerdefiniertes Feld.

3. Die Zahl nach dem Jahr ist das veröffentlichte Jahr des Beitrags

Jetzt möchte ich diese nach der alphabetischen Reihenfolge des Titels sortieren. So wird es in diesem FallC, D, D, Lsein.

Gleichzeitig möchte ich, dass es jährlich sortiert wird. Daher sollten alle Beiträge, die mit "D" beginnen, nach Beitragsjahren sortiert sein.

Auch die Nummern, die vor dem 'von' stehen, sollten innerhalb dieses Jahres in aufsteigender Reihenfolge sortiert werden.

Der folgende Codeabschnitt funktionierte nicht

 $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',
                      ),
         );

Wo mache ich den Fehler? und gibt es irgendwelche lösungen, um dies zu erreichen?

BEARBEITEN:

 Alphabetically sorted 

Also im Grunde will ich das ...

Das Bild ist alsoalphabetischsortiert, gleichzeitig sollten alle Beiträgevom letzten Jahr bis zum ältestensortiert sein. Nehmen wir an, es gibt mehrere Beiträge in einem Jahr. IE: 16 von 2016, 23 von 2016 und 18 von 2016. Ich möchte, dass sie inaufsteigender Reihenfolgebestellt werden.

Abschließend möchte ich die Beiträge bestellt werden,

  1. Alphabetisch

  2. (In alphabetischer Reihenfolge) Jährlich

  3. (Innerhalb eines Jahres bestellt) Numerisch

Zur selben Zeit.

In einer friedlichen Welt sollten die sortierten Beiträge so aussehen

 What exactly I wanted 

2
Murshid Ahmed

Ich bin nicht ganz zu 100% mit der von Ihnen gewünschten Bestellung einverstanden, aber ich denke, Sie müssen ein wenig mehr Zeit mit der Dokumentation für WP_Query verbringen. Ein orderby-Array verwendet den Namen einer Spalte in der wp_posts-Tabelle OR meta_value oder meta_value_num als Schlüssel,notden Namen des benutzerdefinierten Feldschlüssels (in Ihrem Fall custom_key). Der tatsächliche Name des benutzerdefinierten Felds ist im Array args als meta_key definiert.

Wenn Sie sich die letzten beiden Beispiele unter Orderby Parameters im Codex ansehen, können Sie sehen, wie dies funktioniert, und es auf Ihre Situation anwenden. Dies ist ungetestet, gibt Ihnen aber die allgemeine Vorstellung:

$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',
 );

Sie haben auch Ihren meta_query falsch eingerichtet. Ich schlage vor, dass Sie diesen Teil der WP_Query-Dokumentation ebenfalls überprüfen.

1
brianjohnhanna