Hi, community!
I’m using Roots.io Theme v.7 & ACF 4.3.9.
I have custom post type “Events” and added some custom fields using ACF.
I have 2 custom fields specified for cpt Events:
Аnd now, I’m creating custom post type archive with filter by custom fields using this manual — Creating a WP archive with custom field filter
I’m successfully created filtering by event_city
. All works great.
But when I try to create filter by event_category
— query result is always empty( fires if !have_posts():
).
my pre_get_posts function looks like:
add_action('pre_get_posts', 'my_pre_get_posts');
function my_pre_get_posts( $query ){
if( is_admin() ){
return;
}
if( !$query->is_main_query() ){
return;
}
$meta_query = $query->get('meta_query');
if( !empty($_GET['event_category']) )
{
$event_category = explode(',', $_GET['event_category']);
$meta_query[] = array(
'key' => 'event_category',
'value' => $event_category,
'compare' => 'IN',
);
}
// update the meta query args
$query->set('meta_query', $meta_query);
return;
}
I’m tried to modify tax_query
instead of meta_query
in pre_get_posts. But it’s almost breaks archive template and I went back to the meta_query
.
When debugging this issue i’m using this links:
http://wp.local/events/?event_city=12 — work’s great
http://wp.local/events/?event_category=5 — don’t work’s
Also, I’m tried to modify query args just in archive template file. And all works fine — posts filtered by event_category
. My events archive template file then looked:
<?php if (!have_posts()) : ?>
<div class="alert alert-warning">
<?php _e('Sorry, no results were found.', 'roots'); ?>
</div>
<?php get_search_form(); ?>
<?php endif; ?>
<?php
$args = array(
'post_type' => 'events',
'meta_query' => array(
array(
'key' => 'event_category',
'value' => array(8),
'compare' => 'IN'
)
)
);
?>
<?php query_posts($args); ?>
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part('templates/content', get_post_format()); ?>
<?php endwhile; ?>
Need help with that issue. I understand — that taxonomy terms have their archive templates. But i need to do it on main custom post type archive page with filtering.