اگر فروشگاه ووکامرسی شما محصولات زیادی داره، مدیریت تخفیفها میتونه خیلی زمانبر و خستهکننده باشه.
خبر خوب اینه که با یک کد ساده، میتونید کنترل بهتری روی نمایش محصولات در پنل مدیریت داشته باشید.
این کد با افزودن یک فیلتر به نام “براساس وضعیت فروش” در بخش لیست محصولات، به شما این امکان رو میده که:
-
فقط محصولات در فروش ویژه را نمایش دهید
-
فقط محصولات فاقد تخفیف را ببینید
-
محصولات ناموجود بهصورت خودکار از لیست حذف شوند
🔧 این قابلیت برای مواقعی که میخواهید کمپین تخفیف راهاندازی کنید، موجودیها را بررسی کنید، یا برای بازاریابی تصمیمگیری کنید بسیار کاربردی است.
🧩 نحوه استفاده:
کد را در انتهای فایل functions.php
قالب فعال خود یا پلاگین اختصاصیتان قرار دهید.
// افزودن فیلتر کشویی به لیست محصولات در پنل مدیریت add_action( 'restrict_manage_posts', 'tav_filter_products_by_sale_status', 9999 ); function tav_filter_products_by_sale_status() { global $typenow; if ( 'product' === $typenow ) { $selected = isset( $_GET['sale_status'] ) ? $_GET['sale_status'] : ''; ?> <select name="sale_status"> <option value="">براساس وضعیت فروش</option> <option value="on_sale" <?php selected( $selected, 'on_sale' ); ?>>در فروش ویژه</option> <option value="not_on_sale" <?php selected( $selected, 'not_on_sale' ); ?>>در فروش ویژه نیستند</option> </select> <?php } } // اعمال فیلتر به کوئری لیست محصولات add_filter( 'request', 'tav_filter_products_query_by_sale_status' ); function tav_filter_products_query_by_sale_status( $query_vars ) { global $typenow; if ( 'product' === $typenow && isset( $_GET['sale_status'] ) && '' !== $_GET['sale_status'] ) { $sale_status = sanitize_text_field( wp_unslash( $_GET['sale_status'] ) ); // اطمینان از وجود meta_query if ( ! isset( $query_vars['meta_query'] ) || ! is_array( $query_vars['meta_query'] ) ) { $query_vars['meta_query'] = array(); } // حذف محصولات ناموجود $query_vars['meta_query'][] = array( 'key' => '_stock_status', 'value' => 'outofstock', 'compare' => '!=', ); if ( 'on_sale' === $sale_status ) { // فقط محصولاتی که sale price دارند (تخفیف خوردهاند) $query_vars['meta_query'][] = array( 'key' => '_sale_price', 'value' => '', 'compare' => '!=', ); } elseif ( 'not_on_sale' === $sale_status ) { // محصولاتی که sale price ندارند یا خالی است $query_vars['meta_query'][] = array( 'relation' => 'OR', array( 'key' => '_sale_price', 'compare' => 'NOT EXISTS', ), array( 'key' => '_sale_price', 'value' => '', 'compare' => '=', ), ); } } return $query_vars; }