Php 在您的计算机上访问自定义全局变量

Php 在您的计算机上访问自定义全局变量,php,wordpress,woocommerce,orders,Php,Wordpress,Woocommerce,Orders,我正在尝试将全局变量设置为标志。我想在thankyou.php模板中使用它在订购的商品没有库存时显示自定义消息。它不起作用 我在functions.php中的代码: <?php global $woocommerce; global $flag_custom_order; $flag_custom_order=false; $items = $woocommerce->cart->get_cart(); foreach($items as $item => $values

我正在尝试将全局变量设置为标志。我想在thankyou.php模板中使用它在订购的商品没有库存时显示自定义消息。它不起作用

我在functions.php中的代码:

<?php
global $woocommerce;
global $flag_custom_order;
$flag_custom_order=false;
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) { 
    $_product =  wc_get_product( $values['data']->get_id()); 
    $stock=$_product->get_stock_quantity();
    if ($stock <= '0') :
        $flag_custom_order=true;
    endif;    
} 

由于购物车在放置其他购物车后清空,因此在订单接收(谢谢)页面上,
$flag\u custom\u order
变量的值将始终为
false

相反,您可以在活动主题的
functions.php
文件中使用以下内容(在下订单时,在保存数据之前,将其保存为自定义订单元数据):


嗨,谢谢你抽出时间来调查这件事。我将代码添加到chid theme functions.php和thankyou.php中。“它似乎不起作用了。”阿德里安普。抱歉,出现错误,代码已更新…请再试一次。我刚刚在“谢谢”页面上更改了\u has\u backorders到\u is\u backorder,现在可以使用了。非常感谢。
add_action( 'woocommerce_checkout_create_order', 'action_wc_checkout_create_order',  10, 2  );
function action_wc_checkout_create_order( $order, $data ) {
    $has_backordered_items = false;
    
    if( ! WC()->cart->is_empty() ) {
        foreach(WC()->cart->get_cart() as $cart_item ) { 
            if ( $cart_item['data']->get_stock_quantity() <= 0 ) {
                $has_backordered_items = true;
                break;
            }    
        }
    }
    
    if( $has_backordered_items ) {
        $order->update_meta_data( '_has_backordered_items', $has_backordered_items );
    }
}
<?php 
    if ( $order->get_meta('_has_backordered_items') ) {
        echo '<p>' . __("This order has backordered items.") . '</p>';
    }
?>