ایجاد جستو جو گر اختصاصی برای وردپرس

سلام
برای سایت وردپرسی چند پست تایپ ایجاد کردم و می خوام که برای هر کدام از پست تایپ ها یک باکس جستوجو اختصاصی داشته باشم که صرفا جستوجو را در آن پست تایپ انجام بده و برای هرکدام از اون ها صفحه search.php جداگانه و متفاوت ایجاد کنم

از این که مرا کمک میکنید سپاس فراوان

3 پاسخ برای "ایجاد جستو جو گر اختصاصی برای وردپرس"

  1. mtayefi77 گفت:

    از این بابت که وقت گذاشتین بینهایت متشکرم
    این کد ها رک در جایگاهشون قرار دادم ولی
    جواب نگرفتم و گویا صفحه فراخوانی شده در search.php رو نمیشناسه

    1. بله این فایل ها مثال هست و شما باید خودتون طراحی مخصوص به سایت خودتون رو در این فایلها برای نمایش جستجو بنویسد. مثلا اطلاعات پست هایی که در پست تایپ مورد نظر دارید.

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

       
     <form method="get" action="<?php echo home_url( '/' ); ?>">
        <label>
            Search for
            <input type="search" value="<?php echo get_search_query() ?>" name="s" title="Search" />
            <input type="hidden" name="post_type" value="book" />
        </label>
        <input type="submit" value="Search" />
    </form>
     

    بعد در فایل functions پست تایپ مورد نظر رو اعمال میکنیم:

       
     function search_filter($query) {
        if ($query->is_search ) {
            if(isset($_GET['post_type'])) {
                $type = $_GET['post_type'];
                    if($type == 'book') {
                        $query->set('post_type', array('book'));
                    }
            }       
        }
    return $query;
    }
    add_filter('pre_get_posts','search_filter');
     

    این کد به وردپرس میگه پست های از نوع book رو انتخاب کن.

    در فایل search.php هم بر اساس پست تایپ مورد نظر میتونید فایل مجزای مربوط به این پست تایپ رو فراخوانی کنید:

       
    <?php 
    if (have_posts()) {
    	while (have_posts()) { 
    		the_post(); 
    
    		if(isset($_GET['post_type'])) {
    
    			$type = $_GET['post_type'];
    				if($type == 'book') {
    
    				   require_once('book-search.php');
    
    				} else {
    
    				   require_once('other-post-type-search.php');
    
    				}
    
    		} else {
    
    			require_once('general-search.php');
    		} 
    	}
    }
     

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

کد HTMLCSSJavaScriptPHP