web-dev-qa-db-fra.com

get_terms () commande par term_meta

Je fais une requête get_terms() que j'essaie de classer par un méta terme personnalisé. La clé méta du terme personnalisé est 'order' qui correspond à une valeur numérique (comprise entre 1 et 10). J'ai essayé ce qui suit, mais l'ordre ne semble pas suivre la méta-valeur - tout pointeur est apprécié.

$type_terms = get_terms( 'type', array(
    'hide_empty' => false,
    array(
        'key' => 'order',
    ),
    'orderby' => 'meta_value_num',
    'order' => 'ASC',
) );
1
user319940

la commande ne semble pas suivre la méta valeur

Oui, et c'est parce que vous définissez la clé méta comme ceci: (ce qui ne définit pas la clé méta)

array(
  'key' => 'order',
),

La bonne façon consiste à utiliser le paramètre meta_key:

'meta_key' => 'order'

Donc le code complet serait:

$type_terms = get_terms( 'type', array(
    'hide_empty' => false,
    'meta_key' => 'order',
    'orderby' => 'meta_value_num',
    'order' => 'ASC',
) );

Pour plus d'informations, reportez-vous à WP_Term_Query::__construct() , qui est utilisé par la fonction get_terms() .

3
Sally CJ