add_action( 'wp_footer', 'hide_zarinpal_and_digipay_checkout_button_dynamic' );
function hide_zarinpal_and_digipay_checkout_button_dynamic() {
    if ( ! is_checkout() ) return;

    $hour = (int) current_time('H');
    $blocked = ($hour >= 20 || $hour < 11);

    if ( $blocked ) {
        ?>
        <script>
        document.addEventListener("DOMContentLoaded", function() {
            function checkAndTogglePaymentButton() {
                var selectedGateway = document.querySelector('input[name="payment_method"]:checked');
                if (!selectedGateway) {
                    // اگر هنوز انتخابی نشده، دکمه به حالت عادی باشد
                    showPaymentButton();
                    removeMessages();
                    return;
                }

                var gatewayVal = selectedGateway.value;
                var btn = document.querySelector('button#place_order');
                
                // لیست درگاه‌های غیر فعال در ساعت گفته شده
                var disabledGateways = ['WC_ZPal', 'WCDigiPay'];

                if (btn && disabledGateways.includes(gatewayVal)) {
                    btn.style.display = 'none';

                    // حذف پیام‌های قبلی
                    removeMessages();

                    // ایجاد و نمایش پیام مناسب برای هر درگاه
                    var msgId = gatewayVal === 'WC_ZPal' ? 'zpal-msg' : 'digipay-msg';
                    if (!document.getElementById(msgId)) {
                        var msg = document.createElement('div');
                        msg.id = msgId;
                        msg.style.color = 'red';
                        msg.style.fontWeight = 'bold';
                        msg.style.marginBottom = '15px';

                        if (gatewayVal === 'WC_ZPal') {
                            msg.innerText = 'جهت خرید با زرین پال لطفا فردا از ساعت 11 به بعد مراجعه نمایید.';
                        }
                        else if (gatewayVal === 'WCDigiPay') {
                            msg.innerText = 'درگاه دیجی پی در ساعات 20 تا 11 غیر فعال است. لطفا بعدا تلاش کنید.';
                        }

                        btn.parentNode.insertBefore(msg, btn);
                    }
                } else {
                    // درگاه فعال، دکمه نمایش داده شود و پیام‌ها حذف شوند
                    showPaymentButton();
                    removeMessages();
                }
            }

            function removeMessages() {
                var msgs = ['zpal-msg', 'digipay-msg'];
                msgs.forEach(function(id) {
                    var el = document.getElementById(id);
                    if (el) el.remove();
                });
            }

            function showPaymentButton() {
                var btn = document.querySelector('button#place_order');
                if (btn) {
                    btn.style.display = '';
                }
            }
            
            // بررسی اولیه
            checkAndTogglePaymentButton();

            // هنگام تغییر انتخاب درگاه
            var paymentInputs = document.querySelectorAll('input[name="payment_method"]');
            paymentInputs.forEach(function(input){
                input.addEventListener('change', checkAndTogglePaymentButton);
            });
        });
        </script>
        <?php
    }
}

این کد کار نمی کنه ظاهرا، الان ساعت حدود 12 شب هست که دارم تست می کنم و هر دو درگاه باز و قابل انتخاب و پرداخت هستن، قرار بود که از 8 شب تا 11 صبح هر دو درگاه غیر فعال باشه و پیغام لطفا فردا ساعت 11 مراجعه کنید نمایش داده بشه