» » » 8 корисних сніппетів для пошуку у WordPress

8 корисних сніппетів для пошуку у WordPress

8 корисних сніппетів для пошуку у WordPress
На превеликий жаль WordPress не володіє надточним пошуком, чи хоча б зручним… Відвідувач вводячи в пошуку “8 корисних сніппетів” побачить весь список дописів в яких хоча б раз зустрічається одне з слів. Це не є досить зручним, але на щастя, є хоча б і не значні, але корисні функції, які можна додати до вашого шаблону.

І не забуваємо, що такі функції є корисними не тільки для відвідувачів – а й для вас, так як в результаті втрачає не відвідувач, втрачаєте ви – відвідувача :)
І так, маємо 8 сніппетів, які поліпшать весь процес пошуку.

1) Як виключити записи і сторінки з результатів пошуку

Якщо вам потрібно виключити з пошуку якісь конкретні сторінки, то наступний код вставляємо в functions.php

В даному коді будуть виключені записи з ID 0 і 1. Підправляємо ID під ваші потреби.
function SearchFilter($query) {

    if ($query->is_search) {

        $query->set('cat','0,1');

    }

    return $query;

}
add_filter('pre_get_posts','SearchFilter');


2) Форма пошуку WordPress з випадаючим списком категорій

Дозволяє відвідувачу вибрати категорію в якій здійснити пошук. Насправді дуже корисна функція.

Виглядає наступним чином:
8 корисних сніппетів для пошуку у WordPress


В searchform.php шукаємо вашу форму виводу пошуку і замінюємо її наступним кодом:

<form role="search" method="get" id="searchform" action="<?php bloginfo('siteurl'); ?>">

  <div>

    <label class="screen-reader-text" for="s">Шукаємо:</label>

    <input type="text" value="" name="s" id="s" />

    з <?php wp_dropdown_categories( 'show_option_all=All Categories' ); ?>

    <input type="submit" id="searchsubmit" value="Шукати" />

  </div>

</form>

3) Пошук тільки в певної категорії та її підкатегоріях
Дана форма може бути корисна в архівах категорій, щоб дозволити читачам шукати підкатегорії для будь-якої заданої батьківської категорії.

В наступному коді будуть розглядатись всі підкатегорії з категорії ID 1. Підправляємо під свої цілі. Додаємо в searchform.php
<form method=”get” id=”searchform” action=”<?php bloginfo(‘&#65533;); ?>/”>

<div id=”search”>

<input type=”text” value=”Шукаємо… ” onclick=”this.value=”;” name=”s” id=”s” />

<?php $categories = get_categories(‘child_of=1&#8242;);

$catlist = ”;

foreach ($categories as $cat) {

$catlist.= $cat->cat_ID.’,';

}

$catlist.’5&#8242;;

?>

<input type=”hidden” name=”cat” value=”<?php echo “$catlist”?>” />

<input name=”" type=”image” src=”<?php bloginfo(‘&#65533;); ?>/styles/<?php echo “$style_path”; ?>/search.gif” value=”Пошук” class=”btn” />

</div><!–/search –>

</form>

4) Пошук певного типу записів
Думаю з назви все зрозуміло :) Вставляємо в functions.php
function SearchFilter($query) {

  if ($query->is_search) {
    // Вставте певний тип записів, який потрібно шукати

    $query->set('post_type', 'feeds');

  }

  return $query;

}
// Даний фільтр буде вбудований в цикл і буде сортувати результат пошуку передвиведенням

add_filter('pre_get_posts','SearchFilter');


5) Виводимо кількість знайдених матеріалів
Інколи корисно знати скільки результатів пошуку. В файлі search.php шукаємо, приблизно, наступний код:
<h2 class="pagetitle">Search Results</h2>

І замінюємо його на:
<h2 class="pagetitle">Результат пошуку <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span class="search-terms">'); echo $key; _e('</span>'); _e(' &mdash; '); echo $count . ' '; _e('articles'); wp_reset_query(); ?></h2>


6) Підсвічує знайдене пошуком WordPress за допомогою jQuery

Корисна функція для пошуку, дає можливість відразу сконцентруватись на необхідному.

Копіюємо наступний код в functions.php
function hls_set_query() {

  $query  = attribute_escape(get_search_query());

  if(strlen($query) > 0){

    echo '

      <script type="text/javascript">

        var hls_query  = "'.$query.'";

      </script>

    ';

  }

}

function hls_init_jquery() {

  wp_enqueue_script('jquery');

}
add_action('init', 'hls_init_jquery');

add_action('wp_print_scripts', 'hls_set_query');


Далі, наступний код додаємо в header.php перед тегом head
<style type="text/css" media="screen">

    .hls { background: #D3E18A; }

  </style>

  <script type="text/javascript">

  jQuery.fn.extend({

    highlight: function(search, insensitive, hls_class){

      var regex = new RegExp("(<[^>]*>)|(\\b"+ search.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1") +")", insensitive ? "ig" : "g");

      return this.html(this.html().replace(regex, function(a, b, c){

        return (a.charAt(0) == "<") ? a : "<strong class=\""+ hls_class +"\">" + c + "</strong>";

      }));

    }

  });

  jQuery(document).ready(function($){

    if(typeof(hls_query) != 'undefined'){

      $("#post-area").highlight(hls_query, 1, "hls");

    }

  });

  </script>

7) Відключаємо пушук WordPress
Якщо нам взагалі непотрібний пошук, відключаємо його наступним кодом.
Код додаємо в functions.php

function fb_filter_query( $query, $error = true ) {

if ( is_search() ) {

$query->is_search = false;

$query->query_vars[s] = false;

$query->query[s] = false;

// Помилка

if ( $error == true )

$query->is_404 = true;

}
}
add_action( 'parse_query', 'fb_filter_query' );

add_filter( 'get_search_form', create_function( '$a', "return null;" ) );


8) Знімаємо обмеження з кількості знайдених матеріалів в результатах пошуку WordPress

Інколи потрібно, щоб пошук не мав стандартного обмеження циклу пошуку. В файлі search.php додаємо наступний код, але вище цикла, для цього шукаємо наступний код:
<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>

І замінюємо його на:
<?php $posts=query_posts($query_string . '&posts_per_page=-1'); ?>

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>


Тобто додаємо одну стрічку, вище циклу.

Пані та Панове, прошу зважати на те, що кожна тема в WordPress є унікальна і якщо ви використовуєте безплатні шаблони, будьте готові до конфліктних ситуацій в темі і не забуваємо про CSS стилі, які теж можуть бути причиною некоректного виводу функцій…


wordpress
2103 13.10.13



Напівжирний Нахилений текст Підкреслений текст Перекреслений текст | Вирівнювання по лівому краю По центру Вирівнювання по правому краю | Вставка смайликів Вибір кольору | Прихований текст Вставка цитати Перетворити вибраний текст з транслітерації в кирилицю Вставка спойлеру