php-根据Woocommerce中购物车项目的数量添加自定义结帐字段
作者:互联网
最终,当客户结帐超过一定数量时,我试图在woocommerce中为结帐添加一个字段.在本例中,我使用500,并试图在结帐底部显示一条消息.
我一直在尝试各种代码变体,到目前为止,这是我所拥有的.
add_action( 'woocommerce_after_checkout_form', 'woocommerce_add_quantity_message', 12 );
function woocommerce_add_quantity_message() {
global $woocommerce;
$total_products = 0;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values )
{
$total_products += $values['quantity'];
}
if($total_products >=500 )
{
echo '<div class="card_discount_message"><p>MORE THAN 500 WOAHHHH</p></div>';
}
任何指针将不胜感激.我也尝试过修改此处找到的代码,但没有运气woocommerce add fee to cart based on quantity
解决方法:
更新
You can not set a custom checkout field outside of the checkout form.
因此,此自定义字段只能位于结帐表单内的末尾,即在订购说明之后.
尝试以下代码,一旦达到特定的购物车数量(在订购说明之后),该代码将显示自定义结帐字段:
add_action( 'woocommerce_after_order_notes', 'add_field_based_quantity', 20, 1 );
function add_field_based_quantity( $checkout ) {
if( WC()->cart->get_cart_contents_count() >= 500 ) {
echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>';
woocommerce_form_field( 'my_field_name', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __('Enter something'),
), $checkout->get_value( 'my_field_name' ));
echo '</div>';
}
}
代码进入您的活动子主题(或活动主题)的function.php文件中.经过测试和工作.
该代码基于Woocommerce官方文档:Adding a custom special checkout field
因此,您将在该文档中看到如何在定单中保存该自定义字段以及如何将其显示出来……
如果需要,可以使用以下代码在最后添加自定义通知:
add_action( 'woocommerce_after_checkout_form', 'woocommerce_add_quantity_message', 20 );
function woocommerce_add_quantity_message() {
if( WC()->cart->get_cart_contents_count() >= 500 ) {
wc_print_notice( __("MORE THAN 500 WOAHHHH !", "woocommerce"), 'notice');
}
}
代码进入您的活动子主题(或活动主题)的function.php文件中.测试和工作.
标签:checkout,woocommerce,hook-woocommerce,wordpress,php 来源: https://codeday.me/bug/20191108/2010020.html