فیلتر مرتب سازی بیشترین و کمترین کامنت
در این نوشته به شما روش افزودن دو فیلتر جدید به بخش مرتب سازیهای وردپرس را آموزش خواهیم داد تا بتوانید محصولات را براساس بیشترین و کمترین کامنت یا نظر نمایش دهید.
فیلتر مرتب سازی بیشترین و کمترین کامنت
برای اینکار در فایل functions.php قالب فعال فعلی وردپرس خود قطعه کد زیر را اضافه کنید و آن را ذخیره کنید:
function add_custom_query_var( $vars ) {
$vars[] = 'orderby';
return $vars;
}
add_filter( 'query_vars', 'add_custom_query_var' );
// Add custom sorting options
function custom_woocommerce_catalog_orderby( $sortby ) {
$sortby['comment_count'] = 'مرتب سازی بر اساس بیشترین نظر';
$sortby['least_comment_count'] = 'مرتب سازی بر اساس کمترین نظر';
return $sortby;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );
// Modify the product query to sort by comment count
function custom_woocommerce_get_catalog_ordering_args( $args ) {
if ( isset( $_GET['orderby'] ) && 'comment_count' == $_GET['orderby'] ) {
$args['orderby'] = 'comment_count';
$args['order'] = 'DESC';
} elseif ( isset( $_GET['orderby'] ) && 'least_comment_count' == $_GET['orderby'] ) {
$args['orderby'] = 'comment_count';
$args['order'] = 'ASC';
}
return $args;
}
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
// Adjust the main query for comment count sorting
function custom_woocommerce_product_query( $q ) {
if ( isset( $_GET['orderby'] ) && 'comment_count' == $_GET['orderby'] ) {
$q->set( 'orderby', 'comment_count' );
$q->set( 'order', 'DESC' );
} elseif ( isset( $_GET['orderby'] ) && 'least_comment_count' == $_GET['orderby'] ) {
$q->set( 'orderby', 'comment_count' );
$q->set( 'order', 'ASC' );
}
}
add_action( 'woocommerce_product_query', 'custom_woocommerce_product_query' );
اگر نیاز به آموزشهای بیشتر وردپرس دارید در بخش نظرات همین نوشته برای ما بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]


















راهی هست که تعداد نظرات هر محصول هم کنار اسمش نمایش داده بشه؟
بله، میتوانی با افزودن یک کد کوچک به قالب یا فایل functions.php تعداد نظرات را کنار نام محصول نمایش دهی. برای مثال در حلقه نمایش محصولات از تابع get_comments_number( $product_id ) استفاده میکنیم:
echo $product->get_name() . ' (' . get_comments_number($product->get_id()) . ' نظر)';این کار تعداد نظرات را به صورت پویا نمایش میدهد.میشه این فیلترها رو فقط برای کاربران وارد شده فعال کرد؟
بله، کافی است در فانکشن custom_woocommerce_catalog_orderby یک شرط is_user_logged_in() اضافه کنی.
میشه این فیلترها رو با مرتب سازی براساس قیمت هم ترکیب کرد؟
بله، این فیلترها کاملاً با سایر گزینههای مرتبسازی مثل «براساس قیمت» یا «جدیدترین» ترکیب میشوند. کافی است آنها را به همان فانکشن custom_woocommerce_catalog_orderby اضافه کرده و وردپرس خودش ترتیب نمایش را مدیریت میکند.
مرسی بابت قرار دادن کد
موفق باشید.
میشه این فیلترها رو فقط برای یک دسته خاص فعال کرد؟
بله، میتوانی با بررسی is_product_category(‘slug-دسته’) یا has_term() در فانکشن مربوطه، نمایش فیلترها را محدود به یک دسته خاص کنی.