検索条件を変更したときに該当件数を取得する

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' );
  1. 名前はajax で渡すactionの値と同じにすることwp_ajax_XXXXXXXXX

関連記事