با سلام خدمت شما در سایت مدرسه وردپرس؛ خب من شخصا دوست ندارم از افزونه های زیاد برای رفع نیازهای سایت وردپرس خودم استفاده کنم و دوست دارم اگر افزونه ای هم باشه خودم اون افزونه رو نوشته باشم.حتما می پیرسید به چه دلیل!؟ به دلیل اینکه زیاد بود افزون ها باعث فشار آوردن به سرور می شود به همین دلیل دنبال کدهایی بودم که کار یک افزونه رو برای من انجام بدهند. خب یکی از مسائل مهمی که در یک سایت مورد توجه است جستجو در آن است اما اکثر سایت ها در این زمینه خیلی کم کاری کرده اند و  معمولا از قدرت جستجو پایینی برخوردارند که این آزادی کم تری رو به کاربر میدهند.

اما ما امروز با چند خط کد php می توانیم این مسئله رو حل کنیم . این کار باعث می شود که کاربران ما بتوانند عمیق تر و با دقت بیشتری به پیدا کردن موضوعاتی که هستند باشند .

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

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

خب بریم سراغ ساخت افزونه با چند کد Php؛

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

مقدمه

<?php
/**
 * Plugin Name: جستجوی پیشرفته مدرسه وردپرس
 * Plugin URI: wpsmarket.ir
 * Description: این افزونه برای اضافه کردن فرم جستجوی پیشرفته به پوسته وردپرس شما می باشد.
 * Version: 1.1
 * Author: مدرسه وردپرس
 * Author URI: wpschool.ir
 * License: GPL2
 */

مرحله اول:اضافه کردن فرم جستجوگر جدید به وردپرس

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;
}

مرحله دوم : اضافه کردن متغیر ها

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='';

مرحله سوم : معرفی فیلتر ها به وردپرس

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

	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;

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

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

	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;

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

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

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;

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

فیلتر چهارم : تاریخ (روز-ماه-سال)

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;

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

ساخت فیلد جستجو (محل تایپ کلمه مورد نظر برای جستجو) :

	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;

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

if($default['button_show']==1):
$button_option='<li>
<input type="submit" class="search-submit" value="'. esc_attr__( 'جستجو','zistfa' ) .'" />
</li>';
endif;

مرحله چهارم : ثبت جستجوگر در وردپرس

		$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 );

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

قدم آخر : استایل دادن به فرم

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>
';

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

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

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

<!--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-->

نتیجه کار

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

جهت نمایش تصویر در سایز اصلی کلیک کنید

توجه: در صورت نیاز به ساخت جستجوی ajax در وردپرس می توانید مقاله ساخت فرم جستجوی Suggestion در وردپرس را مطالعه کنید.

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

11 دیدگاه برای “ساخت افزونه جستجوی پیشرفته

  • حسن
    - ۲ شهریور , ۱۳۹۵

    مطلب خوب و کاربردی بود..ممنون

    • حسین
      - ۶ شهریور , ۱۳۹۵

      قابلی نداشت فدای شما

  • سیروس
    - ۳ شهریور , ۱۳۹۵

    سلام بسیار عالی بود.
    چرا استایل رو در style.css نذاشتید و اینجوری echo کردید تو صفحه؟

    • حسین
      - ۶ شهریور , ۱۳۹۵

      تشکر
      زیاد فرقی نداره

  • علی
    - ۲۵ شهریور , ۱۳۹۵

    ممنون ما هم فیض بردیم 🙂
    تشکر
    ممنون از سایت خوبتون

  • محمد
    - ۴ مهر , ۱۳۹۵

    سلام
    یه سوال دارم استاد
    آیا توی فرمی که بالا آموزش دادید میشه دو یا چند فیلد دسته بندی مختلف قرار داد؟

    • حسین
      - ۵ مهر , ۱۳۹۵

      بله میشه
      چندتا فیلتر دسته بندی اعمال کنیم

      • محمد
        - ۱۱ مهر , ۱۳۹۵

        بازم سلام
        البته نمیدونم منظورم رو رسوندم یانه
        درواقع میخوام توی هر فیلد چند تا دسته بندی خاص رو قرار بدم
        امکان داره این مورد رو هم آموزش بدید ؟.

        • حسین
          - ۱۲ مهر , ۱۳۹۵

          شما باید کد های قسمت فیلتر دسته بندی رو اینطوری وارد کنید

          if($default['cat_show']==۱):
          $categories = get_categories();
          $cat_option='';
          if($default['label_show']):
          $cat_option .=''.__('دسته بندی','zistfa').'';
          endif;
          $cat_option .=''.__('همه','zistfa').'';
          foreach ($categories as $category) {
          $cat_option .= 'cat_ID.'"';
          if(($cat_selected == $category->cat_ID)&&($default['rememberd']==۱)):
          $cat_option .=' selected';
          endif;
          $cat_option .= '>'.$category->cat_name;
          $cat_option .= '';
          }
          $cat_option .= '';
          $cat_option .=''.__('همه','zistfa').'';
          foreach ($categories as $category) {
          $cat_option .= 'cat_ID.'"';
          if(($cat_selected == $category->cat_ID)&&($default['rememberd']==۱)):
          $cat_option .=' selected';
          endif;
          $cat_option .= '>'.$category->cat_name;
          $cat_option .= '';
          }
          $cat_option .= '';
          endif;

          سوالی بود درخدمتم 🙂

  • مهدی
    - ۸ اردیبهشت , ۱۳۹۷

    میشه امکان این وجود داشته باشه که این کدهایی که بصورت پلاگین قرار دادید طوری بنویسد که بشه درون خود قالب بدون اضافه کردن پلاگین خاصی ایجاد کرد ؟
    دقیقا مثل جستجوگر خودتون در بالای صفحه

    • الناز
      - ۹ اردیبهشت , ۱۳۹۷

      سلام و خسته نباشید،
      بله می تونید کدهایی که لازم دارید رو به فایل functions.php انتقال بدید و دیگه از پلاگین استفاده نکنید
      موفق باشید

دیدگاه خود را بیان کنید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --