انشاء نموذج البحث المخصص في ووردبريس باستخدام الحقول المخصصة ACF اضافات ووردبريس تطوير ثيمات ووردبريس

انشاء نموذج البحث المخصص في ووردبريس باستخدام الحقول المخصصة ACF

انشاء نموذج البحث المخصص هي أمر سهل وليس معقد , و وظيفة النموذج هو البحث والتصفية البسيطة لمحتوى الموقع مثل التصنيفات والحقول المخصصة والوسوم لتحسين عمليات البحث الخاصة في الموقع التي تخدم الزوار .

يعتمد كل هذا البرنامج التعليمي على إنشاء التصنيفات والحقول المخصصة لإعداد نموذج البحث الخاص بنا

كيفية انشاء نموذج البحث المخصص في ووردبريس

دعنا نقول أننا نريد تصميم ويدجت بحث جديدة في الموقع لاستخدامه ، وفي نموذج البحث نريد أن نقوم بادخال المعلومات التالية كي يتمكن الزائر من تصفية نتائج البحث وفقاً لها .

حقل مخصصتصنيف مخصص
Price above
Price Below
Living Space
Rooms Number
Cities
Type

ابدأ انشاء نموذج البحث المخصص من خلال انشاء التصنيف والمقال المخصص :

نحتاج أولاً إلى إنشاء نوع مقال مخصص تعلمناه في البرنامج التعليمي الأخير ، ولا يزال بإمكانك قراءته هنا ونحتاج إلى استدعاء مواقع نوع المنشور هذا ، كما نحتاج إلى إنشاء تصنيفين مخصصين سنسميهما ، مدن – – النوع – يمكنك أيضًا مشاهدة كيفية إنشاء تصنيف مخصص في WordPress.

قم بإنشاء الحقول المخصصة باستخدام اضافة ACF

ستحتاج إلى إنشاء الحقول المخصصة ومن أجل ذلك ، انتقل إلى لوحة تحكم WordPress وقم بتثبيت المكون الإضافي ACF ، وبعد ذلك تحتاج إلى الانتقال إلى صفحة الاضافة والبدء في إنشاء بعض الحقول المخصصة الإضافية

ACF SEARCH AND FILTER
تنصيب اضافة ACF
ACF CUSTOM FIELDS SEARCH AND FILTER
صنع الحقول المخصصة باستخدام البرنامج المساعد ACF

فقط تأكد من أن الملفات المخصصة التي قمت بإنشائها تحتوي على نفس Slug أيضًا النوع : رقم ..

اصنع الملفات المهمة في مجلد الثيم

الخطوة التالية هي الذهاب إلى مجلد النسق الخاص بك باستخدام لوحة التحكم cPanel وافتح إنشاء مجلد جديد ، theme-search وداخل هذا المجلد ، قم بإنشاء ملف جديد أطلق عليه اسم mysearch.php

كتابة أكواد PHP لنموذج البحث

يتم لصق الكود الأول في mysearch.php

// search and Filter in WordPress
<?php
 $is_search = count( $_GET );


    $type = get_terms([
            'taxonomy' => 'type',
            'hide_empty' => false,
    ]);
 $cities = get_terms([
            'taxonomy' => 'cities',
            'hide_empty' => false,
    ]);
    if($is_search)
    {
        $query = search_query();
    }
?>
 
<section class="page-wrap">
<div class="container">
 
            <form action="<?php echo home_url('/');?>">

  <div class="row form-group  ">
      <div class="col-lg-3"> 
         
                <input
                type="text" 
                name="keyword" 
                placeholder="<?php _e(' Write a keyword ','wpmrj3'); ?> "
                class="form-control"
                value="<?php echo isset($_GET['keyword']) ? $_GET['keyword'] : '';?>"
                > 
</div>
 
         <div class="col-lg-3"> 

               
                <select name="cities" class="form-control">

                        <option value=""><?php _e('Where','wpmrj3'); ?></option>

                        <?php foreach($cities as $cities):?>
                                <option 
                                
                                <?php if(  isset($_GET['cities']) && ( $_GET['cities'] == $cities->slug)  ):?>
                                    selected
                                <?php endif;?>


                                value="<?php echo $cities->slug;?>"><?php echo $cities->name;?></option>
                        <?php endforeach;?>

                </select>
            
            </div>
 <div class="col-lg-3"> 
                
            
                <select name="type" class="form-control">

                        <option value=""><?php _e('Type','wpmrj3'); ?> </option>

                        <?php foreach($type as $type):?>
                                <option 
                                
                                <?php if(  isset($_GET['type']) && ( $_GET['type'] == $type->slug)  ):?>
                                    selected
                                <?php endif;?>


                                value="<?php echo $type->slug;?>"><?php echo $type->name;?></option>
                        <?php endforeach;?>

                </select>
            
  </div>   
 

 
           

                                <div class="col-lg-3">

                                       <label> <?php _e('Price above','wpmrj3'); ?></label>

                                        <select name="price_above" class="form-control">

                                            <?php for($i=0; $i < 210000; $i+=10000):?>    

                                                <option 
                                                
                                                <?php if(  isset($_GET['price_above']) && ( $_GET['price_above'] == $i)  ):?>
                                                    selected
                                                <?php endif;?>
                                                
                                                
                                                value="<?php echo $i;?>">
                                                  <?php echo _e('$  ','wpmrj3') . number_format($i) ;?>
                                                </option>

                                            <?php endfor;?>

                                        </select>

                                </div>
 

                                <div class="col-lg-3">

                                        <label><?php _e('Price Below','wpmrj3'); ?> </label>

                                        <select name="price_below" class="form-control">

                                            <?php for($i=0; $i < 210000; $i+=10000):?>    

                                                <option 
                                                
                                                <?php if(  isset($_GET['price_below']) && ( $_GET['price_below'] == $i)  ):?>
                                                    
                                                    selected

                                                <?php elseif( $i == 200000):?>

                                                    selected

                                                <?php endif;?>
                                                
                                                
                                                value="<?php echo $i;?>">
                                                    <?php echo _e('$  ','wpmrj3') . number_format($i) ;?>
                                                </option>
 
                                            <?php endfor;?>

                                        </select>

                                </div>
                               

                                

                                <div class="col-lg-3">

                                       <label> <?php _e('Living Space ','wpmrj3'); ?></label>

                                        <select name="living-space" class="form-control">

                                              <?php for($i=20; $i < 5000; $i+=100):?>  

                                                <option 
                                                
                                        <?php if(  isset($_GET['living_space']) && ( $_GET['space_above'] == $i)  ):?>
                                                    selected
                                                <?php endif;?>
                                                
                                                
                                                value="<?php echo $i;?>">
                                                <?php echo  ($i) . '   ' ;?>
                                                </option>

                                            <?php endfor;?>

                                        </select>

                                </div>


                                <div class="col-lg-3">

                                       <label> <?php _e(' Rooms Number','wpmrj3'); ?></label>

                                        <select name="Rooms_number" class="form-control">

                                    <?php for($i= 0; $i < 5000; $i+=100):?>    
                                                <option 
                                                
                                       <?php if(  isset($_GET['Rooms_number']) && ( $_GET['space_below'] == $i)  ):?>
                                                    selected
                                                <?php endif;?>
                                                
                                                
                                                value="<?php echo $i;?>">
                                               <?php echo  ($i) . '   ' ;?>
                                                </option>

                                            <?php endfor;?>

                                        </select>

                                </div>
 
            </div>
    <button type="submit" class="btn btn-primary "><?php _e('Search ','wpmrj3'); ?> 
    </button>
            <a class="btn btn-primary " href="<?php echo home_url('/');?>"><?php _e(' Reset','wpmrj3'); ?> </a>

            </form>
</div>
</section>

 

يتم لصق الكود الثاني في Functions.php

بعد ذلك ، انتقل إلى ملف Functions.php في قالب الموقع وابدأ في تنشيط نموذج البحث المخصص بلصق هذا الرمز:

function search_query()
{

    $paged = ( get_query_var('paged')  )  ? get_query_var('paged') : 1; 


    $args = [

        'paged' => $paged,
        'post_type' => array('locations'),
        'posts_per_page' => 2,
        'tax_query' => [],
        'meta_query' => [
                'relation' => 'AND',
         ],

    ];

    if( isset($_GET['keyword']) )
    {

            if(!empty($_GET['keyword']))
            {
                    $args['s'] = sanitize_text_field( $_GET['keyword'] );
            }

    }



    if( isset($_GET['type']) )
    {
        if(!empty($_GET['type']))
        {
            $args['tax_query'][] = [

                    'taxonomy' =>  'type',
                    'field' => 'slug',
                    'terms' => array( sanitize_text_field( $_GET['type'] ) )

            ];
        }
    }
     

    if( isset($_GET['cities']) )
    {
        if(!empty($_GET['cities']))
        {
            $args['tax_query'][] = [

                    'taxonomy' =>  'cities',
                    'field' => 'slug',
                    'terms' => array( sanitize_text_field( $_GET['cities'] ) )

            ];
        }
    }


    if( isset($_GET['price_above']) )
    {
        if(!empty($_GET['price_above']))
        {
                $args['meta_query'][] = array(

                        'key' => 'price',
                        'value' => sanitize_text_field( $_GET['price_above']) ,
                        'type' => 'numeric',
                        'compare' => '>='
                );
        }
    }



    if( isset($_GET['price_below']) )
    {
        if(!empty($_GET['price_below']))
        {
          

            $args['meta_query'][] = array(

                'key' => 'price',
                'value' => sanitize_text_field( $_GET['price_below']) ,
                'type' => 'numeric',
                'compare' => '<='
        );

        }
    }




    if( isset($_GET['living_space']) )
    {
        if(!empty($_GET['living_space']))
        {
                $args['meta_query'][] = array(

                        'key' => 'living_space',
                        'value' => sanitize_text_field( $_GET['living_space']) ,
                        'type' => 'numeric',
                        'compare' => '>='
                );
        }
    }




    if( isset($_GET['Rooms_number']) )
    {
        if(!empty($_GET['Rooms_number']))
        {
                $args['meta_query'][] = array(

                        'key' => 'Rooms_number',
                        'value' => sanitize_text_field( $_GET['Rooms_number']) ,
                        'type' => 'numeric',
                        'compare' => '<='
                );
        }
    }
 
    


    return  new WP_Query($args);



}

الخطوة الأخيرة هي استدعاء نموذج البحث المخصص في ووردبريس عبر وظيفة الرمز القصير ، وهذا سهل كل ما عليك القيام به هو فقط لصق الرمز التالي أسفل الرمز في ملف Functions.php

// search and Filter in WordPress
function wpmrj3_search_shortcode( $attr ) {
    ob_start();
    get_template_part('theme-search/mysearch');
    return ob_get_clean();
}
add_shortcode( 'wpmrj3-search', 'wpmrj3_search_shortcode' );

هذا كل شيء ، يمكنك الآن البدء في استخدام نموذج البحث والتصفية واعطاءه نمطًا جديدًا باستخدام Css الخاص بك.


اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *




مقالات مرتبطة

 منع نسخ المقالات و محتوى موقع ووردبريس

منع نسخ المقالات و محتوى موقع ووردبريس

من الأشياء التي تسبب الازعاج احياناً , عندما تقوم بقضاء الساعات الطوال في..

Read More
 اضافة خيارات لصفحة تخصيص قالب ووردبرس

اضافة خيارات لصفحة تخصيص قالب ووردبرس

من المعروف انه لكل قالب في ووردبريس له صفحة تخصيص تستطيع التحكم من..

Read More
 كيفية انشاء وتعديل التذييل لموقع ووردبريس

كيفية انشاء وتعديل التذييل لموقع ووردبريس

في الكثر من المواقع تجد في اسفلها حقوق النسخ CopyRight أو لربما يذكر..

Read More
 أفضل بدائل جوجل أدسنس – الربح من الانترنت

أفضل بدائل جوجل أدسنس – الربح من الانترنت

أفضل وأسرع طرق الربح من الانترنت في حالة إمتلاك موقع إلكتروني أيًا كان..

Read More