web-dev-qa-db-fra.com

Tri des messages selon plusieurs valeurs, combinés

 Sample Image for sorting reference 

Dans cette image,

1. Les lettres noires sont les titres de publication par défaut

2. Le nombre précédant le 'de' est un champ personnalisé.

3. Le numéro après l'année est l'année de publication de la publication

Maintenant, je veux trier ceci selon l'ordre alphabétique du titre. Ce sera donc,C, D, D, Ldans ce cas.

Dans le même temps, je souhaite qu’il soit trié par année. Tous les articles commençant par "D" doivent donc être triés par année.

De plus, les numéros précédant 'de' doivent être triés par ordre croissant au cours de cette année.

Le morceau de code ci-dessous n'a pas fonctionné

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

Où est-ce que je fais l'erreur? et y a-t-il des solutions pour y parvenir?

EDIT:

 Alphabetically sorted 

Donc, fondamentalement, je veux ça ...

Donc, cette image est triéepar ordre alphabétique, en même temps, toutes les publications doivent êtretriées de la dernière année à la plus ancienne, en attendant, disons qu'il y a plusieurs publications la même année. IE: 16 de 2016, 23 de 2016 et 18 de 2016. Je souhaite qu'ils soient commandés dansordre croissant.

En conclusion, je veux que les messages soient commandés,

  1. Alphabétiquement

  2. (Dans l'ordre alphabétique) annuel

  3. (D'ici à l'année commandée) numériquement

En même temps.

Dans un monde pacifique, les messages triés devraient ressembler à ceci

 What exactly I wanted 

2
Murshid Ahmed

Je ne suis pas tout à fait à 100% de l'ordre que vous souhaitez atteindre, mais je pense que vous devez passer un peu plus de temps avec la documentation de WP_Query. Un tableau orderby prend le nom d'une colonne de la table wp_posts OR meta_value ou meta_value_num en tant que clé,notle nom de la clé de champ personnalisé (custom_key dans votre cas) . Le nom réel du champ personnalisé est défini dans le tableau args en tant que meta_key.

Si vous examinez les deux derniers exemples sous Paramètres Orderby dans le Codex , vous pouvez voir comment cela fonctionne et l’appliquer à votre situation. Ceci n’a pas été testé, mais vous donne l’idée générale:

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

Votre code meta_query étant également mal configuré, je vous suggère donc de consulter également cette partie de la documentation WP_Query.

1
brianjohnhanna