Having finally being able to make an AJAX driven live search functional, I need help understanding how to add an else argument function so that when there are no posts matching the search query, the search box will display “No results found” or whatever text I choose.
This is the code I have whereof the else argument before the endif crashes the site.
add_action('wp_ajax_data_fetch' , 'data_fetch');
add_action('wp_ajax_nopriv_data_fetch', 'data_fetch');
function data_fetch() {
$post_search_query = new WP_Query(array('posts_per_page' => -1, 's' => esc_attr($_POST['search_keyword']), 'post_type' => 'post'));
if ($post_search_query->have_posts()) :
while ($post_search_query->have_posts()): $post_search_query->the_post(); ?>
<h5><a href="<?php echo esc_url( post_permalink() ); ?>"><?php the_title();?></a></h5>
<span class="live-search-post-excerpt"><?php the_excerpt(); ?></span>
<?php endwhile;
wp_reset_postdata();
else {
echo 'No results found';
}
endif;
die();
}
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Try to not using endif and endwhile, just use curly brakets {} to determinate ifs body or add :after elseelse:`
Your problem is that you mix two syntaxes.
Read this to fully understand how to write alternative syntax
https://www.php.net/manual/en/control-structures.alternative-syntax.php
add_action('wp_ajax_data_fetch' , 'data_fetch');
add_action('wp_ajax_nopriv_data_fetch', 'data_fetch');
function data_fetch() {
$post_search_query = new WP_Query(array('posts_per_page' => -1, 's' => esc_attr($_POST['search_keyword']), 'post_type' => 'post'));
if ($post_search_query->have_posts()){
while ($post_search_query->have_posts()){ $post_search_query->the_post(); ?>
<h5><a href="<?php echo esc_url( post_permalink() ); ?>"><?php the_title();?></a></h5>
<span class="live-search-post-excerpt"><?php the_excerpt(); ?></span>
<?php } //end while
wp_reset_postdata();
} //end if
else {
echo 'No results found';
} // end else
die();
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0