Wordpress запрос для поиска постов с точным предложением из поиска - PullRequest
0 голосов
/ 08 сентября 2018

Я начинающий разработчик, и это мои первые шаги в Wordpress.

Как я могу показать сообщения, которые содержат поисковый запрос по поисковому вводу в заголовке или содержании? Я не хочу использовать плагины или встроенный поиск Wordpress с его страницей перезагрузки.

Это мой код:

HTML

<form class="search__form" action="" method="POST">
  <div class="search__input-container">
    <input type="text" name="search" class="search__input search__input-js" placeholder="Search">
  </div>
</form>

JavaScript

$('.search__input-js').on('change', function(){
    var search = $('.search__input').val();
    search = search.toLowerCase();
    $.ajax({
      type: 'POST',
      url: ajax_options.admin_ajax_url,
      data:{

          search: search,
          action: 'ajax_func'
      },

      success: function(result) {
        $('.return-msg').html('');
        $('.return-msg').html(result);
      },
      error: function(e) {
        console.log(e);
      }
    });
  });

functions.php

function ajax_func() {
  wp_reset_postdata();
  $search_term = '';
  $result = '';

  if(isset($_POST['search'])){
    $search_term .= $_POST['search'];
  }else{
    $search_term = '';
  }

  $args= array(
    'post_type' => array('post', 'case-study'),

'HERE' 

  );

  $the_query_posts = new WP_Query( $args );
  if ( $the_query_posts->have_posts() ) {
      while ( $the_query_posts->have_posts() )  {
          $the_query_posts->the_post();


          $result .='
          <div class="col-lg-4">';
          $result .='
            <a class="post__link" href="'.get_the_permalink().'">
              <div class="post__container">';

                if (has_post_thumbnail()) {
                  $result .= '

                    '.get_the_post_thumbnail(get_the_ID(), 'post-thumbnail', ['class' => 'post__img', 'alt' => get_the_title()]).'
                  ';
                } else {
                  $result .= '
                    <img class="img-responsive responsive--full post__img" src="" />
                ';
                }
                $result .='
                  <div class="post__background">
                    <p class="post__category">'.get_the_category(get_the_ID())[0]->name .'</p>';
                    $result .='<p class="post__name">'.get_the_title().'</p>';
                    $result .='<div class="post__desc">'.get_field('post_short_desc').'</div>';
                    $result .='
                  </div>
                </div>
              </a>
            </div>';

    }
    wp_reset_postdata();
    } else {
      $result .= '<div class="col-12">0 posts</div>';
      wp_reset_postdata();
    }
    echo $result;
    die();

} 
remove_filter( 'posts_where', 'cc_post_title_filter', 10, 2 );
  add_action('wp_ajax_nopriv_ajax_func', 'ajax_func');
  add_action('wp_ajax_ajax_func', 'ajax_func');

Ajax работает правильно, и я знаю, что должен написать какую-то функцию и настроить специальный запрос WP, чтобы найти свои посты, где я пишу «ЗДЕСЬ», но я не знаю как. Кто-нибудь может дать мне подсказку?

1 Ответ

0 голосов
/ 09 сентября 2018

WP_Query имеет параметр поиска , в который вы можете перейти. Он также встроен, если вы не хотите использовать AJAX (example.com/?s=query+here). В целом это будет выглядеть так:

$args= array(
    'post_type' => array( 'post', 'case-study' ),
    's' => $search_term
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...