亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

訪問 Woocommerce 上的自定義全局變量謝謝

訪問 Woocommerce 上的自定義全局變量謝謝

PHP
一只斗牛犬 2023-07-21 16:09:48
我正在嘗試將全局變量設置為標志。我想在thankyou.php 模板中使用它來在訂購的商品沒有庫存時顯示自定義消息。這不起作用。我在functions.php中的代碼:<?phpglobal $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;    } 在模板中thankyou.php我添加了這個:
查看完整描述

1 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

    由于購物車一旦放入其他商品就會被清空,因此$flag_custom_order變量的值將始終顯示false在“收到訂單(謝謝)”頁面上。


functions.php相反,您可以在活動主題的文件中使用以下內容(這將在下訂單時、保存數據之前將其保存為自定義訂單元數據):


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 );

    }

}

然后在thankyou.php模板文件中,您將使用以下內容(當WC_Order對象存在時):


<?php 

    if ( $order->get_meta('_has_backordered_items') ) {

        echo '<p>' . __("This order has backordered items.") . '</p>';

    }

?>


查看完整回答
反對 回復 2023-07-21
  • 1 回答
  • 0 關注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號