検索条件を変更したときに該当件数を取得する
WordPress
WordPressの検索機能で、条件入力時に該当する記事の件数を取得するコードです。
検索条件が増えたときにも応用可能です。
HTMLはこちら
<form action="<?php echo esc_url( home_url( '/' ) ); ?>">
<button type="submit" id="searchsubmit"></button>
<input type="text" value="" name="s" id="s">
<p><span id="search-result"></span>件</p>
</form>
JavaScriptはこちら
var ajaxurl = '<?php echo admin_url( 'admin-ajax.php'); ?>';
function seachMatchCount(){
/*
// 検索条件
// keyword
// カテゴリ
*/
$.ajax({
type: 'POST',
url: ajaxurl,
data: {
'action' : 'event_seach_match_count',
's' : $('input[name="s"]').val(),
},
success: function( data ){
$('#search-result').html(data);
}
});
return false;
};
キーワード入力のテキストボックスはこちら
// テキストボックスの条件が変更された時の処理
$("input[name='s']").on('change', function(){ seachMatchCount();});
PHPのほうはこちら(functions.php)
// 検索して一致した件数を返す
function event_seach_match_count(){
$s = '';
$s_cate = '';
if (isset($_POST['s'])) {
$s = $_POST['s'];
}
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
'paged' => $paged,
'post_type' => 'post',
's' => $s,
);
$the_query = new WP_Query($args);
$String = "<span>".$the_query->post_count."</span>";
echo $String;
die();
}
add_action( 'wp_ajax_event_seach_match_count', 'event_seach_match_count' );
add_action( 'wp_ajax_nopriv_event_seach_match_count', 'event_seach_match_count' );
- 名前はajax で渡すactionの値と同じにすることwp_ajax_XXXXXXXXX