有人可以告诉我为什么在函数“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
}
}
}
因为你需要在函数中说它需要访问全局变量:
function businessbloomer_hide_free_shipping_for_shipping_class( $rates, $package ) {
global czypokazywacpopupkoszykowy;
...