web-dev-qa-db-fra.com

WP_Query sur les résultats de champs et de commandes personnalisés

J'ai le WP_Query suivant:

$custom_query_args = array(
    'post_type'         => 'mcg_event',
    'posts_per_page'    => -1,
    'meta_query'        => array(
        'relation'  => 'AND',
        array(
            'key'   => 'event_status',
            'value' => 'archived',
        ),
        array(
            'key'       => 'event_start_date',
            'orderby'   => 'meta_value_num',                     
            'order'     => 'ASC',
        )
    ),
);

Je cherche à faire 2 choses:

  1. récupère uniquement les événements dont l'état_événement est archived
  2. classer les résultats par event_start_date

Je peux faire l'une ou l'autre de ces requêtes séparément sans problème, mais quand je les rassemble comme ci-dessus, l'ordre ne fait aucune différence.

Qu'est-ce que je rate?

1
dmje

Pour la commande, vous devez utiliser l'argument orderby de la requête. Donc, ça donnerait quelque chose comme ça:

$custom_query_args = array(
    'post_type'     => 'mcg_event',
    'posts_per_page'=> -1,
    'meta_key'      => 'event_start_date',
    'orderby'       => 'meta_value_num',
    'order'         => 'ASC',
    'meta_query'    => array(
        array(
            'key'   => 'event_status',
            'value' => 'archived',
        ),
    )
);
2
karimeo

Changez votre code avec ceci et pourrait vous aider avec ce que vous cherchez. Le problème ici est que nous ne pouvons pas inclure key, order et orderby dans meta_query. Mais si vous souhaitez commander, vous obtenez des publications basées sur une clé, puis transmettez les arguments de la requête comme ci-dessous:

$custom_query_args = array(
    'post_type'         => 'mcg_event',
    'posts_per_page'    => -1,
    'order'             => 'ASC',
    'meta_key'          => 'event_start_date',
    'orderby'           => 'meta_value_num',
    'meta_query'        => array(
        array(
            'key'   => 'event_status',
            'value' => 'archived',
        ),
    )
);
2
Alok Shrestha