Ограничение поиска по заголовкам записей в WordPress

15.09.2017 | Автор: Maxim Glovatsky Оставить комментарий »

Чтобы стандартный поиск осуществлялся только по заглавиям записей, добавьте этот код в файл functions.php вашей WordPress темы, чтобы ограничить поиск только по заголовкам записей.

<?php
function __search_by_title_only( $search, &$wp_query )
  {
      if ( empty($search) )
      return $search; // skip processing - no search term in query
      $q =& $wp_query->query_vars;
 
      // wp-includes/query.php line 2128 (version 3.1)
      $n = !empty($q['exact']) ? '' : '%';
      $searchand = '';
      foreach( (array) $q['search_terms'] as $term ) {
      $term = esc_sql( like_escape( $term ) );
      $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
      $searchand = ' AND ';
  }
  $term = esc_sql( like_escape( $q['s'] ) );
  if ( empty($q['sentence']) && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] )
  $search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
  if ( !empty($search) ) {
      $search = " AND ({$search}) ";
      if ( !is_user_logged_in() )
          $search .= " AND ($wpdb->posts.post_password = '') ";
      }
      return $search;
  }
add_filter( 'posts_search', '__search_by_title_only', 10, 2 );
?>

Добавить комментарий