I want fetch all posts from the post type book
in the custom taxonomy book_tags
with the meta key lang
and the meta value en
.
My code:
<?php
$args = array(
'post_type' => 'book',
'posts_per_page' => 40,
'paged' => "$paged",
'meta_query' => array(
array(
'key' => 'lang',
'value' => 'en',
'compare' => 'LIKE'
)
),
'tax_query' => array(
array(
'taxonomy' => 'book_tags',
'field' => 'slug',
'terms' => get_queried_object()->slug
)
)
);
$additional_loop = new WP_Query($args);
while ($additional_loop->have_posts()) :
$additional_loop->the_post();
This doesn’t work? Why?
If I remove “meta_query” it works. Is there a bug in “meta_query”?
1 Answer
Since in your comment, you said that you just want posts with meta key lang=en
on a custom taxonomy page, the easiest way to do that would be to filter the query with pre_get_posts
before it is run.
function wpa_107371_meta_query( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
// only change the query on a custom taxonomy
// can check for a specific taxonomy if desired
if ( is_tax() ) {
//define our meta query
$meta_query = array(
array( // needs this nested array syntax to work
'key' => 'lang',
'value' => 'en',
'compare'=> '=',
),
);
$query->set('meta_query', $meta_query);
return;
}
}
add_action( 'pre_get_posts', 'wpa_107371_meta_query' );