ورود به سایت

لوگو آکادمی آی تی
info[at]academyit.net 09126492189 09126492189

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

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

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

 

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


این کد را به Funactions.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
);//default array
foreach((array)$custom_search as $key=>$value){
$default[$key]=$value;
}

 

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

این کد را به Functions.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=”;

 

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

اضافه کردن کدهای زیر به functions


1.دسته بندی

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;

 

 

2. برچسب

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;

 

3. نویسنده
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;

 

 4. تاریخ(روز-ماه-سال)

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

 

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

بعد از درج کدهای بالا رو به function  قالبتون اضافه کردید با استفاده از کد می توانید فرم را در هر جایی که می خواهید به نمایش در بیاورید
<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>

 

نکته:  در کد بالا از خط ۵ تا ۸ برای نمایش فیلتر ها است که اگر ۰ باشد نمایش داده نمی شود و خط ۹ هم مربوط به توضیحات هر فیلد است.( اگر به 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 بالا برای زیبایی بیشتر به خط ۸ با استفاده از خاصیت font-family یک فونت انتخاب کنید