【问题标题】:Placement of Product Quantity Input Field on WooCommerce Checkout在 WooCommerce Checkout 上放置产品数量输入字段
【发布时间】:2021-10-13 17:05:46
【问题描述】:

我已经为此工作了两个多月,我意识到我需要帮助。虽然我从阅读和学习中汲取了很多精力,但我并不完全理解其他人告诉我的一些内容。

由于这是一个学校项目,我很感激我能得到的任何帮助,并且请 - 无论你建议或告诉我做什么,请解释一下,以便我可以跟进。

想法: WooCommerce 的单页结账,客户可以在其中更改数量并删除产品。

当前设计: 请看图。View image in a new tab.

所需设计: 数量字段应“向上”移动并靠近“删除”链接。

我不知道如何做到这一点,也不知道这段代码总体上是否是最优的。如果有关于如何使其更好或更清洁或更优化的建议,请告诉我。

这是完整的代码:

add_filter( 'woocommerce_checkout_cart_item_quantity', 'qty_change_remove_item_checkout_order_review', 1000, 3);
function qty_change_remove_item_checkout_order_review( $quantity_html, $cart_item, $cart_item_key ) {

    $_product = $cart_item['data'];

    if ( $_product->is_sold_individually() ) {

        $product_quantity = sprintf('<input type="hidden" name="cart[%s][qty]" value="" />', $cart_item_key);

    } else {

        $product_quantity = woocommerce_quantity_input(

            array(

                'input_name' => "cart[{$cart_item_key}][qty]",

                'input_value' => $cart_item['quantity'],

                'max_value' => $_product->get_max_purchase_quantity(),

                'min_value' => '1',

                'class' => 'qtyinput',

                'placeholder' => 'Qty',

                'product_name' => $_product->get_name(),

            ),

            $_product,

            false

        );

    }

    $cart = WC()->cart->get_cart();

    foreach ( $cart as $cart_key => $cart_value ) {

        if ( $cart_key == $cart_item_key ) {

            $product_id = $cart_item['product_id'];

            $_product = $cart_item['data'] ;

            if ( ! wp_is_mobile() ) {

                $remove_product = sprintf(

                    '<a href="%s" class="remove-product" title="%s" data-product_id="%s" data-product_sku="%s" data-cart_item_key="%s">Remove</a>',

                    esc_url( wc_get_cart_remove_url( $cart_key ) ),

                    __( 'Remove from this order', 'woocommerce' ),

                    esc_attr( $product_id ),

                    esc_attr( $_product->get_sku() ),

                    esc_attr( $cart_item_key )

                ); 
            } else {

                $remove_product = sprintf(

                    '<a href="%s" class="remove-product-mobile" title="%s" data-product_id="%s" data-product_sku="%s" data-cart_item_key="%s">&#9746;</a>',

                    esc_url(wc_get_cart_remove_url($cart_key)),

                    __( 'Remove from this order', 'woocommerce' ),

                    esc_attr( $product_id ),

                    esc_attr( $_product->get_sku() ),

                    esc_attr( $cart_item_key )

                ); 
            }
        }
    }

    return '<br><span class="product-quantity">' . sprintf( 'Qty: %s', $cart_item['quantity'] ) . ' / ' . $remove_product . '</span>'.$product_quantity.'';

}

【问题讨论】:

    标签: javascript jquery css woocommerce


    【解决方案1】:

    您在下一行中有一个 br>,这就是它向下移动的原因。

    return '<br><span class="product-quantity">' . sprintf( 'Qty: %s', $cart_item['quantity'] ) . ' / ' . $remove_product . '</span>'.$product_quantity.'';
    

    【讨论】:

    • 哦,我的...我怎么会错过呢?谢谢!您发现任何代码改进了吗?
    • 请验证它是否有效,但我无法按原样运行此代码。您可以通过询问自己是否容易改进您的代码,例如,编辑、添加新部分、扩展 WC 类等,以便将来增强。我看到您使用了大量 Ajax 代码来改善异步且非 UI 阻塞的用户体验。不要引用我的话,但就学校项目而言,这是相当不错的。
    • 谢谢 :) 我会研究你所说的关于 WC 课的内容并从中学习。
    • @LenaWeigler 抱歉,我的意思是编辑、向网页添加新部分以及扩展 WC 类。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多