تخفیف ویژه

کد جستجوی پیشرفته وردپرس

دسته بندی: وردپرس
زمان مطالعه: 7 دقیقه
۱۳ خرداد ۱۳۹۹

امروزه داشتن یک سیستم جست‌وجوی کارآمد برای هر وب‌سایتی کاملا ضروری است. مهم نیست که شما یک وبلاگ، فروشگاه آنلاین، سایت تجاری یا هر چیز دیگری دارید، وب‌سایت شما باید راهی برای بازدیدکنندگان داشته باشد تا بتوانند محتوای مورد نظر خود را پیدا کند. این امر تأثیر قابل توجهی در نرخ جست‌وجو و به تبع آن سئوی سایت شما خواهد داشت. در ادامه‌ی این مقاله با اضافه‌کردن کد جستجوی پیشرفته وردپرس بدون استفاده از پلاگین، با ما همراه باشید.

پلاگین‌های جست‌وجوی زیادی در مخزن وردپرس وجود دارند که هر کدام از آن‌ها ویژگی‌های منحصر به فرد خود را داشته و برای این منظور طراحی شده‌اند. برخی افراد معتقدند که نصب پلاگین‌های متعدد بر روی سایت‌های وردپرسی، به دلیل وارد آوردن بار اضافی بر روی سرور، سرعت آن‌ را کاهش می‌دهد؛ به همین دلیل ترجیح می‌دهند تا بدون استفاده از پلاگین، یک سیستم جست‌وجوی پیشرفته را به وب‌سایت خود اضافه کنند. این کار چندان پیچیده نخواهد بود و با افزودن چند خط کد PHP امکان‌پذیر است.

فهرست محتوای این مقاله

چه ویژگی‌هایی باعث می‌شود تا یک فرم جستجو، کارآمد و مفید باشد؟

ویژگی‌های یک فرم جستجو خوب عبارتند از:

جستجو سریع و دقیق: البته این مورد نیازی به گفتن ندارد! منتظر گذاشتن بیش از حد طولانی کاربران، راهی مطمئن برای دور کردن آن‌ها از سایت شماست. یک فرم جست‌وجوی سریع و دقیق به خوبی می‌توانند توجه کاربران کم‌حوصله را به خود جلب کند.

نوار جستجو قابل مشاهده: این نوار باید کاملا واضح و در دسترس باشد؛ در غیر این صورت، بازدیدکنندگان سایت شما سردرگم خواهند شد. ممکن است آن‌ها چنین فکر کنند که سایت شما فرم جست‌وجو ندارد یا این که یافتن این فرم ارزش دردسر پیداکردن آن را ندارد. بنابراین، بسیار مهم است که نوار جستجو، شفاف بوده و به راحتی قابل تشخیص باشد.

جستجو عبارات: همچنین مهم است که سیستم جستجو شما بتواند به طور مؤثر عبارات را جستجو کند. از طریق جستجو عبارت، بازدیدکنندگان می‌توانند نتایج جستجو و چگونگی ظاهرشدن آن را محدود کنند. در نتیجه، افراد فرصت بهتری خواهند یافت تا آنچه را که می‌خواهند بیابند.

مرتب‌سازی و فیلترهای کارآمد: مرتب‌سازی و فیلترگذاری می‌تواند در ارائه‌ی دقیق‌تر نتایج جستجو کمک شایانی کنند. زمانی که فیلترها به خوبی طراحی شده باشند، نه تنها می‌توانند به بازدیدکنندگان شما کمک کنند نتایج را کاهش دهند بلکه راهی برای تعامل با سایت شما نیز فراهم می‌کنند.

نتایج مشخص و واضح: هنگامی که به بازدیدکنندگان خود نتایج جستجو را ارائه می‌دهید، نتایج باید این قابلیت را داشته باشند تا سریع و به آسانی تجزیه و تحلیل شوند. برای فروشگاه‌های آنلاین، کلیه‌ی اطلاعات مربوط به محصول نیز باید قابل مشاهده باشد.

ثبت تاریخچه‌ی جستجو: با ثبت تاریخچه‌ی جستجو می‌توانید درک و شناخت بهتری از بازدیدکنندگان وب‌سایت خود به دست آورید. اگر بدانید که کاربران شما به دنبال چه چیزی هستند، می‌توانید بسیار مؤثرتر به نیازهای آن‌ها پاسخ دهید.

بیش‎‌‌تر بدانیم: آموزش افزایش امنیت وردپرس

فرم جستجو پیشرفته‌ی وردپرس

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

فرم نهایی ما مشابه با تصویر زیر خواهد بود. برای ساخت این فرم، مراحل زیر را دنبال کنید.

search filter

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

قطعه کد زیر را به Functions.php قالب سایت خود اضافه کنید. اگر چنین فایلی برای شما وجود ندارد، در پوشه‌ی قالب خود یک فایل با این نام و پسوند php ایجاد کنید.

//--- custom Search Form -------------------------------------
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
);//default array
foreach((array)$custom_search as $key=>$value){
	$default[$key]=$value;
}

گام دوم کد جستجوی پیشرفته وردپرس : اضافه کردن متغیر‌ها

قطعه کد زیر را به Functions.php قالب خود اضافه کنید.

//--base vars------------------------
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='';

گام سوم کد جستجوی پیشرفته وردپرس : معرفی فیلترها به وردپرس

کدهای زیر را به Functions قالب اضافه کنید.

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

//--------category--------------------	
	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;

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

//--------tag--------------------
	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;

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

//--------author--------------------		
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;

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

//--------Date--------------------		
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;

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

//--------search field--------------------		
	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;

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

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

گام چهارم کد جستجوی پیشرفته وردپرس : ثبت جستجوگر جدید ما در وردپرس

//--------final form-------------------		
		$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 );

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

پس از افزودن کد جستجوی پیشرفته وردپرس به Functions قالب، با استفاده از قطعه کد زیر می‌توانید فرم را در هر جایی که می‌خواهید به نمایش در آورید:

<!--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-->
نکته :

در کد بالا از خط 5 تا 8 برای نمایش فیلترها است که اگر 0 باشد نمایش داده نمی‌شود و خط 9 هم مربوط به توضیحات هر فیلد است.(اگر به demo دقت کنید می‌بینید که در قسمت بالای هر فیلد یک توضیح کوتاه در مورد آن داده شده است)

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

در این مرحله برای بهبود طرح و ظاهر فرم خود باید استایل مناسبی برای آن در نظر بگیریم که برای این منظور می‌توانیم کدهای زیر را به فایل style.css اضافه کنیم تا ظاهر بهتری پیدا کند.

.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 1px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
margin:3px;text-align:center
}
نکته :

در کد css بالا برای زیبایی بیشتر به خط 8 با استفاده از خاصیت font-family یک فونت انتخاب کنید.

افزونه جستجو پیشرفته برای وردپرس: پلاگین‌های جست‌وجوی پیشرفته‌ی وردپرس

جمع‌بندی:

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

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

اگر به یادگیری بیشتر در زمینه‌ی وردپرس علاقه داری، شرکت در دوره متخصص وردپرس را پیشنهاد می‌کنیم، با شرکت در این دوره، در کمتر از یکسال به یک متخصص وردپرس همه فن حریف تبدیل می‌شوی که آماده استخدام، دریافت پروژه و پیاده‌سازی قالب و پلاگین‌های وردپرسی هستی.

چه امتیازی به این مقاله می دید؟
نویسنده کیوان علی محمدی
یادگیرنده ی همیشگی،برنامه نویس،نویسنده،عاشق خلق چیزهای عجیب،عاشق تحلیل داده ها، مسئول بخش فنی و هم بنیان گذار در سون لرن.

نظرات کاربران

Alireza

سلام خسته نباشید بنده کدارو که وارد میکنم ارور سینتکس میگیرم
Inspect erorr end of file مشکل چیه ؟

hamid

با سلام

به سه روش ممکن کپی پیسش کردم تو فانکیشن وردپرسم
خراب میشد و یک ارور خاضی میداد . کجای کار اشتباس اخه؟؟؟ اینم اروری کد زمان ذخیره صفحه میزدم میداد من تمامی کدها رو کپی و پیس میکردم و ذخیره ویرایشگر خود وردپرس رو میزدم این ارور رو میداد و نمیذاشت ذخیرهشه
Something went wrong. Your change may not have been saved. Please try again. There is also a chance that you may need to manually fix and upload the file over FTP. wordpress

Mehran Alipour

سلام .. اینو چه جوری میشه با ووکامرس هماهنگ کرد ؟ دسته های ووکامرس رو بخونه .. ممنون

Hasan Ataie

واقعا عالی و بسیار کاربردی بود
ممنون

ali asadi

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

وحید صالحی

درخواستتون رو در انجمن مطرح کنید دوستانی که بتونن کمکتوم خواهند کرد

رضا

سلام خسته نباشید
چطور میشه meta_box رو هم جز جستجو قرار دهیم شما وقتی یک عبارت را جستجو می کنید فقط در عنوان و متن توضیحات جستجو میشه در meta_box ها جستجو نمی کنه چطور میشه متا باکس رو هم جز جستجو قرار داد

کیوان علی محمدی

باید با استفاده از WP_Query جتسجو رو سفارشی کنید.

حمیدرضا

سلام ببخشید من میخواستم یک فرم جستو جو برای سایت درست کنم مانند تصویر زیر میخواستم بدونم چطوری میتونم این رو درست کنم ممنون از راهنمایی تون
http://uupload.ir/files/g5r_11-24-2015_8-27-08_am.jpg

وحید صالحی

خیلی سادس ساختار و ظاهرش رو با با css و html باید پیاده سازی کنید در گوگل عبارت طراحی فرم جستجو توسط css رو سرچ کنید

kalhor

بسلام
بسیار عالی فقط یه سوال:
اگه بخوام همچین سرچی داشته باشم راه کارش چیه؟
http://tirestore.ir/

کیوان علی محمدی

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

محمد

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

چه کدی باید اضافه بشه به کجا؟؟
ممنون

محمد

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

رضا بهزادی

سلام من قدم اول رو که به functions.php اضافه میکنم خطا میده

میلاد عباسی

ممنون میشم راهنمایی کنید یا توابع این کار بهم معرفی کنید .

میلاد عباسی

سلام .
نمیشه بر اساس زمینه ذلخواه فیلتر کرد ؟
یعنی یه دراپ لیست داشته باشیم که مثلا از 4 تا زمینه دلخواه استفاده کنه و اون ها را هم توی سرچ فیلتر کنه !!!

وحید صالحی

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

مجید

سلام اون s رو نمیشه مثلا به search تغیر بدیم ؟؟؟

سایت تخصصی برق

سلام .من از افزونه EDD استفاده میکنم نمی خوام دانلود هایی که توسط این افزونه ایجاد کردم در نتایج جستوجو نمایش داده بشه به عبارت دیگه نمی خوام پست هایی که توی url اون ها downloads هست نمایش داده بشن.

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :