web-dev-qa-db-fra.com

Définition du commando personnalisé avec l'aide de pré-devoirs

J'utilise le plugin ACF pour créer des champs personnalisés qui sont appliqués à un type de publication personnalisé (projets). Dans mon fichier functions.php, j'essaie d'utiliser pre_get_posts pour modifier l'ordre de mon archive de type de publication personnalisée à l'aide d'un champ personnalisé.

function apply_projects_query_filter ($query)
{
    if (is_admin()) {
        return $query;
    }

    if (is_archive() && $query->query_vars['post_type'] == 'projects' && $query->is_main_query()) {

        $query->set('orderby', 'meta_value');
        $query->set('meta_key', 'project_status');       
        $query->set('order', 'DESC');
    }

    return $query;
}
add_action('pre_get_posts', 'apply_projects_query_filter');

Mon champ personnalisé project_status a les valeurs possibles de 0 ou 1. L'utilisation du code ci-dessus ne renvoie aucun résultat. Qu'est-ce que je fais mal?

2
BitShredder

Vous ne savez pas exactement pourquoi, mais en ajoutant un autre filtre à l'aide de meta_query, tout a commencé à fonctionner. À présent, dans mon archive de type publication personnalisée, je ne reçois que des publications pour lesquelles le champ project_update n'est pas défini et qui sont commandées par project_status. C'est ce que j'étais après.

$meta_query = array(
    array(
       'key'=>'project_update',
       'value'=>'1',
       'compare'=>'!=',
    )
);

$query->set('meta_query', $meta_query);
0
BitShredder