web-dev-qa-db-fra.com

Tri secondaire (solution de repli) pour WP_Query

Ce que je recherche, c’est de créer une option orderby secondaire (ou par défaut) pour une requête personnalisée. Voici ce que j'ai

$post_args = array(
    'post_type' => $taxfunc_post_type,
    'meta_key'  => '_mouldings_dimensions_height',
    'orderby'   => 'meta_value_num',
    'order'     => 'ASC',
    'paged'     => get_query_var('paged'),
    'tax_query' => array(
        array(
            'taxonomy'         => $taxfunc_tax_name,
            'field'            => 'id',
            'include_children' => 0,
            'terms'            => $term_id
        )
    ),
    'meta_query' => array(
        array(
            'key' => 'special_profile',
            'value' => $special_logic_serialized
        )
    )
);

Ce que j'aimerais faire, c'est si _mouldings_dimensions_height est NULL, puis revenez par défaut à title. J'ai vu la réponse de Jan à ce sujet, qui semble être liée, mais je pense que je suis après le contraire. Idéalement, je vérifierais simplement cette requête avec query_var['post_type'] comme l'a demandé l'interlocuteur initial, mais je ne suis pas sûr que je l'aborde correctement. Tout coup de pouce dans la bonne direction serait grandement apprécié. Merci!

UpdateAprès un peu plus de tests, il semble lister la plus ancienne en tant que solution de repli lorsque la méta-valeur est la même sur plusieurs publications (NULL dans ce cas) - cherchant à modifier ce comportement.

3
Zach

C'est une révision assez simple de votre code actuel. Vous pouvez ajouter plusieurs valeurs "orderby" séparées par un espace.

'orderby'   => 'meta_value_num title',

Cela devrait garder la priorité du tri selon votre méta-valeur, avec une sorte de titre secondaire.

7
Eric Holmes