2 votes

Champs personnalisés avancés - Ordre par valeur de clé méta

J'ai une simple requête Wordpress qui liste les résultats de mon type de post personnalisé.

Actuellement, ils sont classés par ordre de date de création du poste.

J'ai besoin qu'ils dans l'ordre d'un champ personnalisé que j'ai nommé 'release_year'. du plus récent au plus ancien.

J'ai du mal à incorporer cette deuxième requête à mes résultats.

Comment puis-je m'assurer que tous les messages sont triés par année de publication ?

Toute aide est la bienvenue.

<?php 
  $posts = get_posts(array(
  'post_type'           => 'discography',
  'posts_per_page'      => -1,
  'meta_key'            => 'release_category',
  'meta_value'          => 'album',
  'orderby'             => 'meta_value',
  'order'               => 'ASC',
  ));            
if( $posts ): ?>

6voto

Nathan Dawson Points 3795

Vous devez commander par release_year quelle que soit la façon dont vous spécifiez release_category comme clé méta, il n'a donc aucun moyen de savoir que vous voulez utiliser l'autre clé à la place.

Le principal problème que vous rencontrez est que vous ne pouvez pas avoir deux meta_key args. Au lieu de cela, vous devez utiliser la fonction meta_query argument.

$posts = get_posts(array(
   'post_type'           => 'discography',
   'posts_per_page'      => -1,
   'meta_key'            => 'release_year',
   'orderby'             => 'meta_value_num',
   'order'               => 'DESC',
   'meta_query'          => array(
        array(
            'key'   => 'release_category',
            'value' => 'album',
        ),
    ),
));   

La méta-requête est utilisée pour définir la catégorie de la version et le nom de l'utilisateur. meta_key a été modifiée pour devenir la clé par laquelle vous souhaitez commander. J'ai également défini l'ordre sur meta_value_num ce qui est important lorsqu'il s'agit de valeurs numériques. Enfin, vous devez utiliser l'ordre décroissant.

Pour en savoir plus : https://codex.wordpress.org/Class_Reference/WP_Meta_Query

https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X