J'essaie d'ajouter une requête fiscale sur le hook pre_get_posts en utilisant le code suivant:
// Add custom posts to main query (archive and home)
add_action( 'pre_get_posts', 'add_post_types_to_query' );
function add_post_types_to_query( $query ) {
if ( (is_home() || is_category() || is_search()) && $query->is_main_query() && !is_admin() )
{
// Query all posts on index and category pages
$query->set( 'post_type', array( 'post', 'page', 'definition', 'video', 'data_vizualization', 'quizz', 'talk', 'question', 'study', 'bibliography' ) );
$workspace_taxonomy_query =
array(array(
'taxonomy ' => 'workspace',
'field' => 'slug',
'terms' => array('particulier'),
'operator' => 'IN'
));
$query->tax_query->queries[] = $workspace_taxonomy_query;
$query->set( 'tax_query', $workspace_taxonomy_query);
}
return $query;
}
Ce code donne la clause where suivante: "0 = 1". Qu'est-ce qui ne va pas? Est-ce le bon crochet? Comment puis-je ajouter correctement le filtre de taxonomie AVANT que la requête principale soit terminée?
Merci d'avance pour les réponses !
Vous avez une erreur syntaxique ou orthographique. Il y a un espace après "taxonomy" dans votre tableau tax_query
. Si cela était la somme de cela, j'aurais juste posté un commentaire, mais en plus, cette ligne $query->tax_query->queries[] = $workspace_taxonomy_query;
est inutile. Rien ne change avec ou sans cela. N'essayez pas de pirater le tableau comme ça. Utilisez simplement $query->set( 'tax_query', $workspace_taxonomy_query);
comme ci-dessous (en utilisant une taxonomie et un terme existant dans mon environnement de test):
// Add custom posts to main query (archive and home)
add_action( 'pre_get_posts', 'add_post_types_to_query' );
function add_post_types_to_query( $query ) {
if ( (is_home() || is_category() || is_search()) && $query->is_main_query() && !is_admin() )
{
// Query all posts on index and category pages
$query->set( 'post_type', array( 'post', 'page', 'definition', 'video', 'data_vizualization', 'quizz', 'talk', 'question', 'study', 'bibliography' ) );
$workspace_taxonomy_query =
array(
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => array('test-4'),
'operator' => 'IN'
)
);
$query->tax_query->queries[] = $workspace_taxonomy_query;
}
return $query;
}