فیلترهای وردپرس (جدیدترین ها ، امتیاز ، قیمت ….)

فهرست مطالب

در وردپرس وقتی بخواهیم یک سری از محصولات رو نشون بدیم از کوئری استفاده میکنیم حالا این کوئری رو میشه آرگیومنت هاشو تغییر داد تا محصولات رو بر اساس یکسری پارامتر ها انتخاب کنه مثلا بر اساس پرطرفدار ترین ها یا قیمت یا امتیاز یا …..

تنها قسمتی که باید تغییر کنه order و order_by داخل  arg$ هست که به تابع wp_query داده میشه: مثلا

‘order’ => ‘desc’, //صعودی

‘order’ => ‘asc’,  //نزولی

کمترین و بیشترین قیمت

‘orderby’ => ‘meta_value_num’,
‘meta_key’=> ‘_price’,
‘order’ => ‘asc’,

بر اساس کم و زیاد امتیاز

‘orderby’ => ‘meta_value_num’,
‘meta_key’=> ‘_wc_average_rating’,
‘order’ => ‘desc’,

بیشتر و کمترین فروش

‘orderby’ => ‘meta_value_num’,
‘meta_key’=> ‘total_sales’,
‘order’ => ‘desc’,

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

پرطرفدار یا محبوب ترین ها

‘orderby’ => ‘comment_count’,
‘order’ => ‘desc’,

و خیلی از موارد دیگه که تو لینک (کلیک کنید ) مثال زده ست.

نمایش فیلترها در آرشیو ووکامرس

در فیلتر خود ووکامرس (البته این بدون ووکامرس هم کار میکنه) اگر دقت کرده باشین آخرین های لوپ خود وردپرس وقتی از فیلترها استفاده میکنه به آخر لینک دسته محصولات یک بخش اضافه میکنه مثلا :

domain.com/category-name/?orderby=highprice

حالا با استفاده از همین پارامتر orderby که در لینک فرق میکنه یکسری هم خودمون بسازیم که روی هر کدوم کلیک شد و هرچی نشون داد از آدرس برداریم و بر اساس همون چیدمان تغییر بدیم چون هر زمان که روی لینک کلیک میشه صفحه مجدد لود میشه و دوباره کوئری اجرا میشه .

که خواهیم داشت : منوی :

<ul id=”arc-pro-menu”>
<li>منطبق بر : </li>
<li><a href=”<?php echo $catlink;?>/?orderby=modified”>به روز رسانی شده</a></li>
<li><a href=”<?php echo $catlink;?>”>جدیدترین</a></li>
<li><a href=”<?php echo $catlink;?>/?orderby=rating”>امتیاز</a></li>
<li><a href=”<?php echo $catlink;?>/?orderby=popularity”>پرطرفدار</a></li>
<li><a href=”<?php echo $catlink;?>/?orderby=lowprice”>کمترین قیمت</a></li>
<li><a href=”<?php echo $catlink;?>/?orderby=highprice”>بیشترین قیمت</a></li>
</ul>

همچنین بر اساس هر منو که انتخاب میشه :

if(isset($_GET[‘orderby’])){
$orderbyarc = $_GET[‘orderby’];
if($orderbyarc == ‘highprice’){
$loop = new WP_Query( array(
‘post_type’ => ‘product’,
‘posts_per_page’ => 12 ,
‘paged’ => $paged,
‘orderby’ => ‘meta_value_num’,
‘meta_key’=> ‘_price’,
‘order’ => ‘desc’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘ID’,
‘terms’ => $cat
)
)
) );
}elseif($orderbyarc == ‘lowprice’){
$loop = new WP_Query( array(
‘post_type’ => ‘product’,
‘posts_per_page’ => 12 ,
‘paged’ => $paged,
‘orderby’ => ‘meta_value_num’,
‘meta_key’=> ‘_price’,
‘order’ => ‘asc’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘ID’,
‘terms’ => $cat
)
)
) );
}elseif($orderbyarc == ‘modified’){
$loop = new WP_Query( array(
‘post_type’ => ‘product’,
‘posts_per_page’ => 12 ,
‘paged’ => $paged,
‘orderby’ => ‘modified’,
‘order’ => ‘DESC’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘ID’,
‘terms’ => $cat
)
)
) );

}elseif($orderbyarc == ‘rating’){
$loop = new WP_Query( array(
‘post_type’ => ‘product’,
‘posts_per_page’ => 12 ,
‘paged’ => $paged,
‘orderby’ => ‘meta_value_num’,
‘meta_key’=> ‘_wc_average_rating’,
‘order’ => ‘desc’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘ID’,
‘terms’ => $cat
)
)
) );
}elseif($orderbyarc == ‘popularity’){
$loop = new WP_Query( array(
‘post_type’ => ‘product’,
‘posts_per_page’ => 12 ,
‘paged’ => $paged,
‘orderby’ => ‘comment_count’,
‘order’ => ‘desc’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘ID’,
‘terms’ => $cat
)
)
) );
}

}else{
$loop = new WP_Query( array(
‘post_type’ => ‘product’,
‘posts_per_page’ => 12 ,
‘paged’ => $paged,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘ID’,
‘terms’ => $cat
)
)
) );
}

3 پاسخ

    1. سلام نظر لطف شماست
      این کوئری رو میتونید توی شورتکد تعریف کنید یا هر form که داخل کد قالب اختصاصی تون گذاشتید. بخش کدهای fetch داخل فایل فانکشن ولی خب باید کدنویسی بدونید بتونید تحلیل و جایگزاری کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *