עמוד מבצעים מושלם עם Discount Rules for woo

אם אתם בונים חנויות עם WooCommerce, יש סיכוי טוב שאתם כבר משתמשים בתוסף Discount Rules for WooCommerce. זה התוסף הזה שכל אחד מתקין כשהוא רוצה לבנות מערכת מבצעים קצת יותר חכמה — לפי כמות, לפי אחוז, לפי קבוצות משתמשים, לפי כל דבר בערך.

אבל אז מגיע השלב שבו אתם רוצים להציג עמוד שמרכז את כל המבצעים באתר. אתם נכנסים לדף חדש, שמים את השורטקוד שהתוסף נותן, מצפים לראות גריד יפה של מוצרים… ואז מגלים שזה לא בדיוק עובד.

העמוד נראה שונה מהשאר. הכפתורים לא באותו עיצוב. אין שליטה על הסידור. לפעמים זה שובר את העימוד באלמנטור. ואם אתם עובדים עם JetEngine או תבניות מותאמות אישית – בכלל מתחיל הבלאגן.

במקום להשתגע עם CSS ולעצב מחדש את מה שהתוסף מציג עם השורט קוד, יש פתרון הרבה יותר פשוט: פשוט לתת תגית אוטומטית לכל מוצר שיש עליו הנחה.

כלומר, ברגע שמופעל מבצע על מוצר כלשהו – הוא מקבל תגית בשם megasales. וכשהמבצע יורד – התגית מוסרת. אתם לא צריכים לעשות כלום ידנית. ברגע שיש תגית – פשוט בונים עמוד רגיל של מוצרים שמסנן לפי התגית הזו, והופ — יש לכם עמוד מבצעים שנראה בדיוק כמו כל שאר עמודי החנות באתר.

אותו גריד, אותו עיצוב, אותו פלואו.

הקוד הבא עושה בדיוק את זה: הוא יוצר תגית, עובר על כל המוצרים באתר, בודק האם מופעל עליהם מבצע, מוסיף או מסיר את התגית בהתאם, מריץ את זה אוטומטית כל שבועיים, וגם מוסיף כפתור בלוח הבקרה כדי שתוכלו לעדכן את זה בלחיצה כשאתם רוצים.

הקוד:

PHP
/**
 * Credit: https://dgtool.co.il/
 */
function elitzur_update_discounted_products_tags($product_id = null) {
    $sale_tag_slug = 'megasales';
    $sale_tag_name = 'מבצעי ענק';
    $sale_tag = get_term_by('slug', $sale_tag_slug, 'product_tag');
    if (!$sale_tag) {
        $sale_tag = wp_insert_term($sale_tag_name, 'product_tag', ['slug' => $sale_tag_slug]);
    }
    $sale_tag_id = is_object($sale_tag) ? $sale_tag->term_id : $sale_tag['term_id'];
    $product_ids = [];
    if ($product_id) {
        $product_ids[] = $product_id;
    } else {
        $args = [
            'post_type'      => 'product',
            'posts_per_page' => -1,
            'post_status'    => 'publish',
            'fields'         => 'ids',
        ];
        $product_ids = get_posts($args);
    }
    foreach ($product_ids as $pid) {
        $product = wc_get_product($pid);
        if ($product && ($product->is_type('simple') || $product->is_type('variable'))) {
            $discount_details = apply_filters('advanced_woo_discount_rules_get_product_discount_details', false, $product);
            if (!empty($discount_details)) {
                wp_set_object_terms($pid, $sale_tag_id, 'product_tag', true);
            } else {
                $current_tags = wp_get_post_terms($pid, 'product_tag', ['fields' => 'ids']);
                if (in_array($sale_tag_id, $current_tags)) {
                    $new_tags = array_diff($current_tags, [$sale_tag_id]);
                    wp_set_object_terms($pid, $new_tags, 'product_tag', false);
                }
            }
        }
    }
}

add_action('save_post_product', function($post_id) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    if (!current_user_can('edit_post', $post_id)) return;
    elitzur_update_discounted_products_tags($post_id);
});

add_action('init', function() {
    if (!wp_next_scheduled('elitzur_update_discounted_products_cron')) {
        wp_schedule_event(time(), 'elitzur_biweekly', 'elitzur_update_discounted_products_cron');
    }
});

add_filter('cron_schedules', function($schedules) {
    $schedules['elitzur_biweekly'] = [
        'interval' => 60 * 60 * 24 * 14,
        'display'  => __('Once every 2 weeks')
    ];
    return $schedules;
});

add_action('elitzur_update_discounted_products_cron', function() {
    elitzur_update_discounted_products_tags();
});

add_action('admin_bar_menu', function($wp_admin_bar) {
    if (!current_user_can('manage_options')) return;
    
    // שימוש בעמוד הנוכחי במקום home_url
    $current_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    
    $args = [
        'id'    => 'update_sale_labels',
        'title' => 'עדכון מבצעי MegaSale',
        'href'  => add_query_arg('elitzur_force_update', '1', $current_url),
        'meta'  => [
            'title'  => 'לחץ לעדכון התגיות למוצרים במבצע',
            'class'  => 'update-sale-labels-button',
        ]
    ];
    $wp_admin_bar->add_node($args);
}, 999);

add_action('init', function() {
    if (isset($_GET['elitzur_force_update']) && current_user_can('manage_options')) {
        elitzur_update_discounted_products_tags();
        
        // הסרת הפרמטר מה-URL ו-redirect לעמוד הנוכחי
        $current_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
        $clean_url = remove_query_arg('elitzur_force_update', $current_url);
        
        wp_redirect($clean_url);
        exit;
    }
});
Expand

מי שלא אוהב לגעת בקבצים של התבנית – אפשר להדביק את הקוד הזה בתוסף כמו Code Snippets. פשוט מתקינים, מוסיפים קטע קוד חדש, מדביקים, שומרים וזהו. הקוד רץ לבד, בלי לגעת בקבצים של התבנית.

ומי שכן רגיל לערוך את functions.php – אפשר להדביק את זה בסוף הקובץ של תבנית הבת.

בסופו של דבר, במקום עמוד שונה ולא מותאם עם שורטקוד, יש לכם עמוד רגיל לגמרי שנטען מהר, מעוצב כמו כל החנות, ואפשר גם לשלב אותו ב־Elementor או JetEngine בלי בעיה.

וזה בדיוק איך שצריך לבנות חנות — בלי קיצורי דרך עקומים.

את קוד ה -Php ניתן להטמיע בקובץ ה – function בתבנית הבת או לחלופין להשתמש בתוסף snippet.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

אליצור ימיני
אליצור ימיני
מתמקד בפתרונות מותאמים אישית – משלב האפיון, דרך הביצוע ועד הניתוח השיווקי והמדיד.
העדכונים שלא תרצו לפספס
הירשמו ותהיו הראשונים לקבל את המדריכים הכי חמים למייל.
אלמנטור
הוספת לינקים לטאבים
הקוד יוצר קישורים ישירים לטאבים באלמנטור, במקום שלקוחות יצטרכו לחפש את הטאב הנכון.
אלמנטור
איך ליצור אלמנטים גרירים
הוספת אופציה לגרירת אלמנטים באתר, דרך פשוטה ליצור אינטרקטיביות עם המשתמש.
אלמנטור
איך להוסיף קונפטי באתר אלמנטור
יצירת אפקט קונפטי אחרי פעולות מסוימות באתרי אלמנטור
אלמנטור
שדרוג חוויית העלאת הקבצים באלמנטור – מדריך מהיר וקליל
העלאת קבצים היא חלק בלתי נפרד מטפסים רבים, בואו נהפוך את זה לחוויה חכמה, נוחה ומרשימה?
אלמנטור
איך להפוך את הווידג'ט וידאו באלמנטור ליותר אינטראקטיבי?
בעזרת GSAP, הפכו את האתר שלכם לבלתי נשכח עם אנימציות שיגרמו לגולשים לעצור ולהתמקד!
חיפוש חופשי
העדכונים שלא תרצו לפספס
הירשמו ותהיו הראשונים לקבל את המדריכים הכי חמים למייל.
הרשימה מתעדכנת כל הזמן - מומלץ לשמור את הדף במועדפים!
כדי לשמור את האתר לחצו על Ctrl+D במקלדת (במק D+⌘).