DIV在结帐页面上生成了2次(WOO COMMERCE)()

当用户单击运输详细信息复选框时, 问题开始。当用户选中该框时, 带有class order-detail-summary-outer类别的div会自动生成。过去我做了很多修改。所以我认为我做错了。点击运输信息复选框。订单摘要变成两倍。仅小计, 运输和总计。

DIV在结帐页面上生成了2次(WOO COMMERCE)()

文章图片
DIV在结帐页面上生成了2次(WOO COMMERCE)()

文章图片
我在下面提供review-order.php文件代码
< ?php /** * Review order table * * This template can be overridden by copying it to yourtheme/woocommerce/checkout/review-order.php. * * HOWEVER, on occasion WooCommerce will need to update template files and you * (the theme developer) will need to copy the new files to your theme to * maintain compatibility. We try to do this as little as possible, but it does * happen. When this occurs the version of the template file will be bumped and * the readme will list any important changes. * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce/Templates * @version 3.8.0 */defined( 'ABSPATH' ) || exit; ?> < table class="shop_table woocommerce-checkout-review-order-table"> < thead> < tr> < th class="product-name"> < ?php esc_html_e( 'Product', 'woocommerce' ); ?> < /th> < th class="product-total"> < ?php esc_html_e( 'Subtotal', 'woocommerce' ); ?> < /th> < /tr> < /thead> < tbody> < ?php do_action( 'woocommerce_review_order_before_cart_contents' ); foreach ( WC()-> cart-> get_cart() as $cart_item_key => $cart_item ) { $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); if ( $_product & & $_product-> exists() & & $cart_item['quantity'] > 0 & & apply_filters( 'woocommerce_checkout_cart_item_visible', true, $cart_item, $cart_item_key ) ) { ?> < tr class="< ?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?> "> < td class="product-name"> < ?php echo apply_filters( 'woocommerce_cart_item_name', $_product-> get_name(), $cart_item, $cart_item_key ) . '& nbsp; '; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> < ?php echo apply_filters( 'woocommerce_checkout_cart_item_quantity', ' < strong class="product-quantity"> ' . sprintf( '& times; & nbsp; %s', $cart_item['quantity'] ) . '< /strong> ', $cart_item, $cart_item_key ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> < ?php echo wc_get_formatted_cart_item_data( $cart_item ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> < /td> < td class="product-total"> < ?php echo apply_filters( 'woocommerce_cart_item_subtotal', WC()-> cart-> get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> < /td> < /tr> < ?php } }do_action( 'woocommerce_review_order_after_cart_contents' ); ?> < /tbody> < /table> < div class="order-detail-summary-outer"> < div class="cart-subtotal"> < h2> < ?php esc_html_e( 'Subtotal', 'woocommerce' ); ?> < /h2> < div class="order-detail-summary-item"> < ?php wc_cart_totals_subtotal_html(); ?> < /div> < /div> < ?php foreach ( WC()-> cart-> get_coupons() as $code => $coupon ) : ?> < div class="cart-discount coupon-< ?php echo esc_attr( sanitize_title( $code ) ); ?> "> < h2> < ?php wc_cart_totals_coupon_label( $coupon ); ?> < /h2> < div class="order-detail-summary-item"> < ?php wc_cart_totals_coupon_html( $coupon ); ?> < /div> < /div> < ?php endforeach; ?> < h2> Shipping< /h2> < ?php if ( WC()-> cart-> needs_shipping() & & WC()-> cart-> show_shipping() ) : ?> < ?php do_action( 'woocommerce_review_order_before_shipping' ); ?> < ?php wc_cart_totals_shipping_html(); ?> < ?php do_action( 'woocommerce_review_order_after_shipping' ); ?> < ?php endif; ?> < ?php foreach ( WC()-> cart-> get_fees() as $fee ) : ?> < div class="fee"> < h2> < ?php echo esc_html( $fee-> name ); ?> < /h2> < div class="order-detail-summary-item"> < ?php wc_cart_totals_fee_html( $fee ); ?> < /div> < /div> < ?php endforeach; ?> < ?php if ( wc_tax_enabled() & & ! WC()-> cart-> display_prices_including_tax() ) : ?> < ?php if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) : ?> < ?php foreach ( WC()-> cart-> get_tax_totals() as $code => $tax ) : // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited ?> < div class="tax-rate tax-rate-< ?php echo esc_attr( sanitize_title( $code ) ); ?> "> < h2> < ?php echo esc_html( $tax-> label ); ?> < /h2> < div class="order-detail-summary-item"> < ?php echo wp_kses_post( $tax-> formatted_amount ); ?> < /div> < /div> < ?php endforeach; ?> < ?php else : ?> < div class="tax-total"> < h2> < ?php echo esc_html( WC()-> countries-> tax_or_vat() ); ?> < /h2> < div class="order-detail-summary-item"> < ?php wc_cart_totals_taxes_total_html(); ?> < /div> < /div> < ?php endif; ?> < ?php endif; ?> < ?php do_action( 'woocommerce_review_order_before_order_total' ); ?> < div class="order-total"> < h2> < ?php esc_html_e( 'Total', 'woocommerce' ); ?> < /h2> < div class="order-detail-summary-item"> < ?php wc_cart_totals_order_total_html(); ?> < /div> < /div> < ?php do_action( 'woocommerce_review_order_after_order_total' ); ?> < /div>

#1 这件事可能来自很多事情, 例如sql查询中的错误, 重复div的javascript, …
如果是从php方面, 我不知道WOOCommerce, 但是你可以在循环中应用\ array_unique()方法来删除重复项(例如下面的代码作为解决方法)。
< ?php foreach ( \array_unique(WC()-> cart-> get_coupons()) as $code => $coupon ) : ?>

https://www.php.net/manual/en/function.array-unique.php
【DIV在结帐页面上生成了2次(WOO COMMERCE)()】PS:但是我确定这是在JavaScript方面的错误。
#2 一目了然。看来是你如何修改现有的HTML结构。 WooCommerce使用许多ajax调用来更新该信息(购物车总数, 结帐总数)。如果你修改了该结构, 但不知道将其发送回/替换的位置, 它将注入一个新部分。
正如LsKIT所说, 这是一个JS问题, 但由于修改了HTML, 所以更为严重。

    推荐阅读