# تایمر تخفیف محصول

**URL:** <https://forums.7ho.st/t/%D8%AA%D8%A7%DB%8C%D9%85%D8%B1-%D8%AA%D8%AE%D9%81%DB%8C%D9%81-%D9%85%D8%AD%D8%B5%D9%88%D9%84/9672>\
**Category:** وردپرس\
**Tags:** ووکامرس3, وردپرس, ووکامرس1, مشکل-ووکامرس, ووکامرس\
**Created:** [ژانویه 12، 2024، 5:16ب.ظ UTC](https://forums.7ho.st/t/%D8%AA%D8%A7%DB%8C%D9%85%D8%B1-%D8%AA%D8%AE%D9%81%DB%8C%D9%81-%D9%85%D8%AD%D8%B5%D9%88%D9%84/9672 "2024-01-12T17:16:37Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![aliahmadi](https://forums.7ho.st/user_avatar/forums.7ho.st/aliahmadi/32/8362_2.png) [@aliahmadi](https://forums.7ho.st/u/aliahmadi)\
**Post date:** [ژانویه 12، 2024، 5:16ب.ظ UTC](https://forums.7ho.st/t/%D8%AA%D8%A7%DB%8C%D9%85%D8%B1-%D8%AA%D8%AE%D9%81%DB%8C%D9%81-%D9%85%D8%AD%D8%B5%D9%88%D9%84/9672/1 "2024-01-12T17:16:37Z")

</div>

سلام  
کد زیر برای نمایش تایمر تخفیف محصول هست برای محصولات تخفیف دار تایمر نمایش میده ولی برای همه محصولات تخفیف تایمر یکجور نمایش میده **(درصورتی که زمان پایان تخفیف محصولات با هم فرق دارند)** باید چیکار کنم؟

 ![IMG_20240112_200918_edit_902711139966](https://forums.7ho.st/uploads/default/original/2X/4/48c3835cbbb68cd014c7740ddcd3fe8ff90e38f9.jpeg)

```nohighlight
/*تایمر تخفیف محصول*/

function show_sale_timer_shortcode() {
    global $product;

    if ( is_a($product, 'WC_Product') && $product->is_on_sale() ) {
        $sale_start_date = get_post_meta( get_the_ID(), '_sale_price_dates_from', true );
        $sale_end_date = get_post_meta( get_the_ID(), '_sale_price_dates_to', true );

        if ( $sale_start_date && $sale_end_date ) {
            $current_time = current_time( 'timestamp', true );
            
            if ( $current_time >= $sale_start_date && $current_time <= $sale_end_date ) {
                $time_remaining = $sale_end_date - $current_time;

                // افزودن تایمر و اسکریپت جاوااسکریپت برای به‌روزرسانی تایمر بدون رفرش صفحه
                $output = '<p id="sale-timer">تخفیف تا: <span class="timer">' . gmdate("H:i:s", $time_remaining) . '</span></p>';
                $output .= '
                <script>
                jQuery(function($) {
                    function updateTimer() {
                        $.ajax({
                            url: "'.admin_url('admin-ajax.php').'",
                            type: "POST",
                            data: {
                                "action": "update_sale_timer",
                                "product_id": "'.get_the_ID().'"
                            },
                            success: function(response) {
                                $(".timer").html(response);
                            }
                        });
                    }
                    
                    setInterval(updateTimer, 1000);
                });
                </script>';

                return $output;
            }
        }
    }
}
add_shortcode('show_sale_timer', 'show_sale_timer_shortcode');

// تابع برای به‌روزرسانی زمان تایمر با استفاده از AJAX
add_action('wp_ajax_update_sale_timer', 'update_sale_timer_callback');
add_action('wp_ajax_nopriv_update_sale_timer', 'update_sale_timer_callback');
function update_sale_timer_callback() {
    if ( isset($_POST['product_id']) ) {
        $product_id = $_POST['product_id'];

        // بازگردانی محصول با استفاده از ID محصول
        $product = wc_get_product($product_id);
        
        $sale_start_date = get_post_meta( $product_id, '_sale_price_dates_from', true );
        $sale_end_date = get_post_meta( $product_id, '_sale_price_dates_to', true );

        if ( $sale_start_date && $sale_end_date ) {
            $current_time = current_time( 'timestamp', true );
            
            if ( $current_time >= $sale_start_date && $current_time <= $sale_end_date ) {
                $time_remaining = $sale_end_date - $current_time;

                // کم کردن مقدار ثابت از زمان باقی‌مانده
                $time_remaining -= 60; // مثال: از هر بار به‌روزرسانی، یک دقیقه (60 ثانیه) کم می‌کنیم
                $formatted_time = gmdate("H:i:s", $time_remaining);

                // ارسال زمان به فرانت‌اند برای نمایش به کاربر
                echo $formatted_time;
                wp_die();
            }
        }
    }
    echo 'متاسفانه خطا رخ داده است.';
    wp_die();
}

```

با [show\_sale\_timer] نمایش داده میشود
