کد جستجو مطالب در قالب وردپرس

کد جستجو مطالب در قالب وردپرس

کد جستجو مطالب وردپرس – در این آموزش ابتدا فرم جستجو را در که در فایل searchform.php قرار دارد را داینامیک کرده و با استفاده از تابع get_search_form آن را نمایش می دهیم .

برای شروع کار وارد فایل searchform.php شده و کد زیر را به آن اضافه کنید .

the_search_query ورودی جستجو شده کاربر را نمایش می دهد .

فایل searchform.php

<form action="/" method="get">
    <input type="text" name="s" id="search" value="<?php the_search_query(); ?>" />
	<select name="post_type" id="post-type">
	<?php
	$post_types_list = ['any' => 'همه','post' => 'مطالب','page' => 'برگه ها'];
	 foreach($post_types_list as $kp => $kv):
	?>
	<option <?php if(@$_GET['post_type'] == $kp) echo "selected=\"selected\"" ?> value="<?php echo $kp; ?>"><?php echo $kv; ?></option>
	<?php endforeach; ?>
	</select>
    <button type="submit" class="search-button ">جستجو</button>
</form>


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

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

<?php get_search_form(); ?>


فایل search.php که نتایج جستجو شده را نمایش می دهد

<header class="page-header alignwide">
		<h1 class="page-title">
		<?php echo "جستجو برای " . get_search_query(); ?>
		</h1>
</header>

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

	<div class="search-result-count">
		<?php
		echo $GLOBALS['wp_query']->found_posts. " مورد یافت شد";
		?>
	</div>
	<?php
	while ( have_posts() ) {
		the_post();
        echo "<h2>" . get_the_title() ."</h2><br>";
	}
} else {
	echo "<h2>موردی یافت نشد !</h2>";
}
	?>


از آن جایی که قابلیت جستجو بر اساس post_type را هم جستجوگر اضافه کردیم باید در فایل functions.php کوئری اصلی را با post type مان یکی کنیم .

تنظیم query در فایل functions.php

function set_search_post_type($query){
	$post_type = isset($_GET['post_type']) ? $_GET['post_type'] : "any";
	if(!is_admin() && $query->is_main_query() && $query->is_search()){
	$post_type = isset($_GET['post_type']) ? $_GET['post_type'] : "any";
		$query->set('post_type',$post_type);
	}
}

add_action('pre_get_posts' , 'set_search_post_type');

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

contact us