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?
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);