Home › Forums › General Issues › WP archive with custom field filter
Hello everybody. Help me please.
Made a filter according to the instructions: WP archive with custom field filter
Everything works, but when the posts are not found, the “select” is empty.
How to make filter options always appear, even if there are no posts?
function.php:
$GLOBALS['my_query_filters'] = array(
'field_1' => 'city',
'field_2' => 'vac'
);
add_action('pre_get_posts', 'my_pre_get_posts', 10, 1);
function my_pre_get_posts( $query ) {
if( is_admin() ) return;
if( !$query->is_main_query() ) return;
$meta_query[] = $query->get('meta_query');
foreach( $GLOBALS['my_query_filters'] as $key => $name ) {
if( !empty($_GET[ $name ]) ) {
$value = explode(',', $_GET[ $name ]);
$meta_query[] = array(
'key' => $name,
'value' => $value,
'compare' => 'IN',
);
}
}
$query->set('meta_query', $meta_query);
return;
}
HTML:
<div id="search-houses">
<?php
$field = get_field_object('city');
$values = explode(',', $_GET['city']);
?>
<div class="filterss">
<div class="filter" data-filter="city">
<select class="city">
<option value="">Region</option>
<?php foreach( $field['choices'] as $choice_value => $choice_label ): ?>
<option value="<?php echo $choice_value; ?>" <?php if( in_array($choice_value, $values) ): ?>selected<?php endif; ?> /> <?php echo $choice_label; ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
</div>
<div class="columns-container vacc">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php get_template_part('loop-v'); ?>
<?php endwhile; ?>
<?php else: echo 'Not Found.
'; ?>
<?php endif; ?>
</div>
Use the field key here instead of the field name
$field = get_field_object('city');
The reason why is because of the current post does not have any values then ACF does not know how to get the field object. ACF uses a combination of the field name and the post ID to look up the field key, when there is not value ACF cannot find the field key and cannot get the field object.
The topic ‘WP archive with custom field filter’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.