ایجاد افزونه جستجوی پیشرفته در سایت وردپرس

سلام دوستان به تیک تم خوش آمدید. در این مطلب با آموزش ایجاد افزونه جستجوی پیشرفته در سایت وردپرس در خدمت شما هستیم.

قبل از این که وارد بحث شویم‚ باید بدانید که چرا برای ایجاد امکان جستجوی پیشرفته در سایت از یک افزونه آماده استفاده نکردیم و قصد داریم با کد نویسی خودمان این افزونه را بنویسیم؟

در جواب به این سوال باید بگویم که اگر تعداد افزونه‌های نصب شده شما زیاد باشد باعث فشار آمدن به سرور می‌شود. پس شما اگر بتوانید برای اضافه کردن یک قابلیت به سایت خود به جای نصب یک افزونه جدید‚ با استفاده از کد نویسی آن قابلیت را اضافه کنید‚ به سود سایت خودتان کار کرده‌اید.

یک امکان بسیار مهم که باید در هر سایتی وجود داشته باشد جستجو در سایت است. که البته بسیاری از سایت‌ها از قدرت جستجو پایینی برخوردارند. برای اضافه کردن قابلیت جستجو با دقت بالا به سایت خود‚ با استفاده از کد نویسی و بدون نیاز به نصب افزونه جدید می‌توانید کدهای php زیر را به سایت خود اضافه کنید. برای اضافه کردن این قابلیت ما از ایجاد یک جور فیلتر برای فرم جستجو استفاهده می‌کنیم.

آموزش ایجاد افزونه جستجوی پیشرفته در سایت وردپرس

برای ساختن افزونه کدهای زیر را به فایل index.php افزونه خود اضافه کنید.

توضیحات افزونه

[php]

<?php

/**

* Plugin Name: جستجوی پیشرفته

* Plugin URI: wpsmarket.ir

* Description: افزونه‌ای جهت افزودن فرم جستجوی پیشرفته به پوسته وردپرس

* Version: 1.1

* Author: تیک‌تم

* Author URI: tiktheme.com

* License: GPL2

*/

[/php]

۱- افزودن فرم جستجوی جدید به وردپرس

[php]

function custom_search_form($custom_search){

$default=array(

‘cat_show’=>false,

‘tag_show’=>false,

‘author_show’=>false,

‘archive_show’=>false,

‘field_show’=>true,

‘label_show’=>false,

‘button_show’=>true,

‘rememberd’=>true,

‘echo’=>false

);

foreach((array)$custom_search as $key=>$value){

$default[$key]=$value;

}

[/php]

۲- افزودن متغیرها

[php]

global $WP_Query,$query,$wp_user;

$cat_option=”;$tag_option=”;$author_option=”;$archive_option=”;

$advance_option=”;$close_option=”;$field_option=”;$button_option=”;

$cat_selected=get_query_var(‘cat’);

$tag_selected=get_query_var(‘tag’);

$author_selected=get_query_var(‘author’);

$day_selected=get_query_var(‘day’);

$month_selected=get_query_var(‘monthnum’);

$year_selected=get_query_var(‘year’);

if($day_selected==0)$day_selected=”;

if($month_selected==0)$month_selected=”;

if($year_selected==0)$year_selected=”;

[/php]

۳- معرفی فیلترها به وردپرس

ایجاد فیلتر اول برای دسته‌بندی:

[php]

if($default[‘cat_show’]==1):

$categories = get_categories();

$cat_option='<li><ul>’;

if($default[‘label_show’]):

$cat_option .='<li class=”cat-label”>’.__(‘دسته بندی’,’zistfa’).'</li>’;

endif;

$cat_option .='<li class=”search-cat”><select name=”cat” id=”searchcat” ><option value=””>’.__(‘همه’,’zistfa’).'</option>’;

foreach ($categories as $category) {

$cat_option .= ‘<option value=”‘.$category->cat_ID.'”‘;

if(($cat_selected == $category->cat_ID)&&($default[‘rememberd’]==1)):

$cat_option .=’ selected’;

endif;

$cat_option .= ‘>’.$category->cat_name;

$cat_option .= ‘</option>’;

}

$cat_option .= ‘</select></li></ul></li>’;

endif;

[/php]

این فیلتر جهت انتخاب دسته‌بندی در فرم جستجو است. در واقع به کمک این فیلتر دسته‌بندی جستجوی خود را انتخاب خواهید کرد.

ایجاد فیلتر دوم برای برچسب:

[php]

if($default[‘tag_show’]==1):

$tags = get_categories(‘taxonomy=post_tag’);

$tag_option='<li><ul>’;

if($default[‘label_show’]):

$tag_option .='<li class=”tag-label”>’.__(‘برچسب’,’zistfa’).'</li>’;

endif;

$tag_option .='<li class=”search-tag” ><select name=”tag” id=”searchtag” ><option value=””>’.__(‘همه’,’zistfa’).'</option>’;

foreach ($tags as $tag) {

$tag_option .= ‘<option value=”‘.$tag->slug.'”‘;

if(($tag_selected == $tag->slug)&&($default[‘rememberd’]==1)):

$tag_option .=’ selected’;

endif;

$tag_option .= ‘>’.$tag->cat_name;

$tag_option .= ‘</option>’;

}

$tag_option .= ‘</select></li></ul></li>’;

endif;

[/php]

این فیلتر جهت انتخاب برجسب در فرم جستجو است. در واقع شما به کمک این فیلتر برجسب جستجوی خود را انتخاب خواهید کرد.

ایجاد فیلتر سوم برای نویسنده:

[php]

if($default[‘author_show’]==1):

$authors=get_users(array(‘who’=>’authors’,’fields’=>array(‘id’,’display_name’)));

$author_option='<li><ul>’;

if($default[‘label_show’]):

$author_option .='<li class=”author-label”>’.__(‘نویسنده ‘,’zistfa’).'</li>’;

endif;

$author_option .='<li class=”search-author” ><select name=”tag” id=”searchauthor” ><option value=””>’.__(‘همه’,’zistfa’).'</option>’;

foreach ($authors as $author) {

$author_option .= ‘<option value=”‘.$author->id.'”‘;

if(($author_selected == $author->id)&&($default[‘rememberd’]==1)):

$author_option .=’ selected’;

endif;

$author_option .= ‘>’.$author->display_name;

$author_option .= ‘</option>’;

}

$author_option .= ‘</select></li></ul></li>’;

endif;

[/php]

این فیلتر جهت انتخاب نویسنده مورد نظر در فرم جستجو است. در واقع شما به کمک این فیلتر نویسنده جستجوی خود را انتخاب خواهید کرد.

ایجاد فیلتر چهارم برای تاریخ (روز/ماه/سال):

[php]

if($default[‘archive_show’]==1):

$archive_option='<li><ul>’;

if($default[‘label_show’]):

$archive_option .='<li class=”archive-label”>’.__(‘تاریخ’,’zistfa’).'</li>’;

endif;

$archive_option .='<li class=”archive-field”>

<input type=”text” value=”‘ . $year_selected . ‘” name=”year” id=”year” size=”3″ placeholder=”‘.__(‘سال’,’zistfa’).'” />

<input type=”text” value=”‘ . $month_selected . ‘” name=”monthnum” id=”monthnum” size=”2″ placeholder=”‘.__(‘ماه’,’zistfa’).'” />

<input type=”text” value=”‘ . $day_selected. ‘” name=”day” id=”day” size=”1″ placeholder=”‘.__(‘روز’,’zistfa’).'” />

</li></ul></li>’;

endif;

[/php]

این فیلتر جهت انتخاب تاریخ مطالب برای انجام عملیات جستجو است.

ایجاد فیلد جستجو:

[php]

if($default[‘field_show’]==1):

$field_option='<li><ul>’;

if($default[‘label_show’]):

$field_option .='<li class=”search-label”>’.__(‘جستجو برای : ‘,’zistfa’).'</li>’;

endif;

$field_option .='<li class=”search-field”><input type=”text” value=”‘ . get_search_query() . ‘” name=”s” placeholder=”‘.__(‘کلمه مورد نظر + اینتر’,’zistfa’).'” /></li>

</ul>

</li>’;

endif;

[/php]

فیلدهای جستجو در واقع مکان‌هایی برای تایپ کلمه مورد نظر جهت انجام عملیات جستجو می‌باشند.

ایجاد دکمه جستجو:

[php]

if($default[‘button_show’]==1):

$button_option='<li>

<input type=”submit” class=”search-submit” value=”‘. esc_attr__( ‘جستجو’,’zistfa’ ) .'” />

</li>’;

endif;

[/php]

۴- ثبت جستجوگر در وردپرس

[php]

$form = ‘<form role=”search” method=”get” class=”searchform” action=”‘ . home_url( ‘/’ ) . ‘” ><ul>

‘.$cat_option.$tag_option.$author_option.$archive_option.$field_option.$button_option.’

</ul></form>’;

if($default[‘echo’]==1):

echo $form;

else:

return $form;

endif;

}

add_filter( ‘get_search_form’, ‘custom_search_form’,10,1 );

[/php]

تا این مرحله فرم جستجوی شما برای نمایش ساخته شده است.

۵- ایجاد استایل برای فرم

[php]

echo'<style>

.cat-label, .tag-label, .author-label, .archive-label, .search-label {font-size : normal;padding : 3px;text-align : center;}

.author-label,.search-author select{color:rgb(53, 122, 232);border-color:rgb(53, 122, 232)}

.tag-label,.search-tag select{color:rgb(142, 68, 173);border-color:rgb(142, 68, 173)}

.cat-label,.search-cat select{color:rgb(216, 66, 55);border-color:rgb(216, 66, 55)}

.archive-label,.archive-field input{color:rgb(0, 167, 83);border-color:rgb(0, 167, 83)}

form.searchform ul li {display: inline-block;}

form.searchform ul li ul li{display: list-item;}

.search-form select,.search-form input {

border: solid 2px;

-moz-border-radius: 2px;

-webkit-border-radius: 2px;

border-radius: 2px;

margin:3px;text-align:center

}

</style>

‘;

[/php]

شما می‌توانید کدهای Css دلخواه خود را اضافه کنید.

نمایش جستجوگر پیشرفته

کد زیر را در مکانی که قصد دارید فرم جسجو خود را به نمایش دربیاورید‚ قرار دهید.

[php]

<!–custom-search-form–>

<div class=”search-form”>

<?php custom_search_form(array(

‘echo’=>1,

‘archive_show’=>1,

‘cat_show’=>1,

‘tag_show’=>1,

‘author_show’=>1,

‘label_show’=>1,

));?>

</div>

<!–/custom-search-form–>

[/php]

 

امیدوارم از این آموزش وردپرس لذت برده باشید. همواره خوشحال می شویم اگر هر سوال یا راهنمایی که در مورد آموزش ایجاد افزونه جستجوی پیشرفته در سایت وردپرس داشتید در پایین بخش نظرات مطرح کنید.

 

مطالب مرتبط:

با چه افزونه ای امکانات بیشتر و عالی به ووکامرس اضافه کنیم؟

تغییر مسیر پوشه های اصلی در وردپرس

چگونه در وردپرس از هشتگ استفاده کنیم؟

چگونه توابع سفارشی را به وردپرس بیافزاییم؟

منبع: تیک‌تم – ارائه دهنده: قالب تک صفحه ای وردپرس قالب دایرکتوری وردپرس قالب شخصی وردپرس