全局变量,add_filter 和 add_action (woocommerce/wordpress)

问题描述 投票:0回答:1

有人可以告诉我为什么在函数“businessbloomer_hide_free_shipping_for_shipping_class()”中设置为 1 的变量 $czypokazywacpopupkoszykowy 在“函数 wyswietl_popup_koszyka_i_kasy()”中没有值 1 吗?它的值仍然是 0,在第一行代码中设置。

<?php
global czypokazywacpopupkoszykowy;
$czypokazywacpopupkoszykowy = 0;

add_action( 'wp_enqueue_scripts', 'porto_child_css', 1001 );





// Load CSS
function porto_child_css() {
    // porto child theme styles
    wp_deregister_style( 'styles-child' );
    wp_register_style( 'styles-child', esc_url( get_stylesheet_directory_uri() ) . '/style.css' );
    wp_enqueue_style( 'styles-child' );

    if ( is_rtl() ) {
        wp_deregister_style( 'styles-child-rtl' );
        wp_register_style( 'styles-child-rtl', esc_url( get_stylesheet_directory_uri() ) . '/style_rtl.css' );
        wp_enqueue_style( 'styles-child-rtl' );
    }
}



add_filter( 'woocommerce_package_rates', 'businessbloomer_hide_free_shipping_for_shipping_class', -12, 2 );
function businessbloomer_hide_free_shipping_for_shipping_class( $rates, $package ) {

    $shipping_class_target = 30;           // ID OF MY SHIPPING_CLASS
    $in_cart = false;
    foreach( WC()->cart->cart_contents as $key => $values ) {
        if( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target ) {
            $in_cart = true;
            break;
        } 
    }
    if( $in_cart ) {
        unset( $rates['inpost_paczkomaty:11'] );     //VALUE:ID OF MY SHIPPING METHOD
        $czypokazywacpopupkoszykowy = 1;
    }
    return $rates;

}




add_action('wp_footer', 'wyswietl_popup_koszyka_i_kasy',9999);
function wyswietl_popup_koszyka_i_kasy() {


// Pobierz zmienną $czypokazywacpopupkoszykowy korzystając z filtra
global $czypokazywacpopupkoszykowy;


echo "zzz" .     $czypokazywacpopupkoszykowy;

     if ((is_cart() && $czypokazywacpopupkoszykowy == 1) || (is_checkout()) && $czypokazywacpopupkoszykowy == 1) { // Wyświetlamy popup na stronie koszyka i kasy


            $show_popup = true;


        if (isset($_COOKIE['popup_closed']) && $_COOKIE['popup_closed'] == 'true') {
            $show_popup = false;
        }

        if ($show_popup) {
            ?>
            <div id="custom-cart-popup" class="cart-popup">
                <div class="popup-content">
                    <p>W koszyku znajduje się co najmniej jeden produkt, który można odebrać jedynie osobiście. Jeśli chcesz złożyć zamówienie z opcją wysyłki pozostaw w koszyku jedynie produkty, które podlegają wysyłce.</p>
                    <a href="#" id="close-popup" class="close-popup">Zamknij</a>
                </div>
            </div>

            <style>
                /* Stylizacja popupa */
                .cart-popup {
                    display: none;
                    position: fixed;
                    top: 0;
                    left: 0;
                    width: 100%;
                    height: 100%;
                    background: rgba(0, 0, 0, 0.8);
                    z-index: 999;
                }

                .popup-content {
                    position: absolute;
                    top: 50%;
                    left: 50%;
                    transform: translate(-50%, -50%);
                    background: #fff;
                    padding: 20px;

                    box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
                    text-align: center;
                }

                .close-popup {
                    display: inline-block;
                    margin-top: 10px;
                    padding: 10px 20px;
                    background: #000000;
                    color: #ffffff;
                    text-decoration: none;

                }
            </style>

            <script type="text/javascript">
                jQuery(document).ready(function($) {
                    // Wyświetlanie popupa na stronie koszyka i kasy po 60 sekundach
                    setTimeout(function() {
                        $('#custom-cart-popup').fadeIn();
                    }, 1000);

                    // Obsługa zamknięcia popupu
                    $('#close-popup').on('click', function(e) {
                        e.preventDefault();
                        $('#custom-cart-popup').fadeOut();
                        // Ustawiamy ciasteczko, aby nie wyświetlać popupa ponownie przez 60 sekund
                        document.cookie = 'popup_closed=true; expires=' + new Date(new Date().getTime() + 120000).toUTCString() + '; path=/';
                    });
                });
            </script>
            <?php
        }
    }
}




  1. 将变量写入会话的方法
  2. 保存和读取变量的方法“解决方法”
variables woocommerce
1个回答
0
投票

因为你需要在函数中说它需要访问全局变量:

function businessbloomer_hide_free_shipping_for_shipping_class( $rates, $package ) {
    global czypokazywacpopupkoszykowy;

    ...

在 PHP 函数中访问全局变量

© www.soinside.com 2019 - 2024. All rights reserved.