Скрыть «удаление товара» и «ввод количества» из корзины в WooCommerce

#php #wordpress #woocommerce #cart #hook-woocommerce

#php #wordpress #woocommerce #Корзина #крюк-woocommerce

Вопрос:

На странице корзины WooCommerce я хочу скрыть:

  • кнопка «удалить товар»
  • поле «ввод количества»

Для товаров, которые будут указаны в комментарии // HIDE REMOVE BUTTON amp; QUNATITY OF THESE ITEMS в приведенном ниже коде

 if (is_cart()){
    foreach ( $cart->get_cart() as $cart_item ) {
        $product = $cart_item['data'];

        $original_name = method_exists( $product, 'get_name' ) ? $product->get_name() : $product->post->post_title;
        
        if ($original_name == "Build Your Own"){
            $meta = wc_get_formatted_cart_item_data( $cart_item, true );
            $sMeta = substr($meta, -7);
            $new_name = $original_name . ' - ' . $sMeta;
            
            if( method_exists( $product, 'set_name' ) )
                $product->set_name( $new_name );
            else
                $product->post->post_title = $new_name;
        }else{
            $meta = wc_get_formatted_cart_item_data( $cart_item, true );
            
            if (!empty($meta)){
              
              // HIDE REMOVE BUTTON amp; QUANTITY OF THESE ITEMS.
              
            }
        }
    }
}
  

Может кто-нибудь рассказать мне, как это сделать?

Комментарии:

1. вы должны применить условие в файле шаблона корзины. найдите кнопки, которые вы хотите удалить, и оберните их if()

Ответ №1:

Первый вариант — скрыть эти поля с помощью jQuery и CSS. Вы можете использовать различные крючки на странице корзины, например woocommerce_before_calculate_totals , крючок действия.

Примечание: поскольку все строки таблицы shop_table содержат одинаковые классы, правильная кнопка / поле скрыты на основе идентификатора продукта.

  • Объяснение с помощью тегов комментариев, добавленных в код
 function action_woocommerce_before_calculate_totals( $cart ) {
    if ( is_admin() amp;amp; ! defined( 'DOING_AJAX' ) )
        return;

   if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    // Only cart
    if( ! is_cart() )
        return;

    // If cart is NOT empty
    if ( ! $cart->is_empty() ) {
    
        // Loop
        foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
            // Get an instance of the WC_Product object
            $product = $cart_item['data'];
            
            // Get product id
            $product_id = $cart_item['product_id'];

            // Get name
            $original_name = method_exists( $product, 'get_name' ) ? $product->get_name() : $product->post->post_title;
            
            // Compare
            if ( $original_name == 'Build Your Own') {
                $meta = wc_get_formatted_cart_item_data( $cart_item, true );
                $sMeta = substr( $meta, -7 );
                $new_name = $original_name . ' - ' . $sMeta;
                
                // Set name
                if( method_exists( $product, 'set_name' ) ) {
                    $product->set_name( $new_name );
                } else {
                    $product->post->post_title = $new_name;
                }
            } else {
                $meta = wc_get_formatted_cart_item_data( $cart_item, true );
            
                // NOT empty
                if ( ! empty( $meta ) ) {
                    // Hide remove button amp; quantity fields
                    ?>
                    <script>
                        jQuery( document ).ready( function($) {
                            // Selector (product remove)
                            var product_selector = '[data-product_id="<?php echo $product_id; ?>"]';
                            
                            // Hide 'remove item'
                            $( product_selector ).css( 'display', 'none' );
                            
                            // Hide 'quantity input' (starting from the product remove selector)
                            $( product_selector ).parent().siblings( '.product-quantity' ).find( '.quantity' ).css( 'display', 'none' );
                        });
                    </script>
                    <?php
                }
            }
        }
    }
}
add_action( 'woocommerce_before_calculate_totals', 'action_woocommerce_before_calculate_totals', 10, 1 );
  

Другой вариант — скрыть кнопку удаления с помощью woocommerce_cart_item_remove_link фильтра. Таким образом, это зависит от ваших предпочтений и конечной цели, затем вы можете применить что-то подобное для поля количества.

 function filter_woocommerce_cart_item_remove_link( $link, $cart_item_key ) {
    // Returns true on the cart page.
    if ( is_cart() ) {
        // Get cart
        $cart = WC()->cart;
        
        // If cart is NOT empty
        if ( ! $cart->is_empty() ) {
        
            // Loop
            foreach ( $cart->get_cart() as $cart_item ) {
                // Get an instance of the WC_Product object
                $product = $cart_item['data'];

                // Get name
                $original_name = method_exists( $product, 'get_name' ) ? $product->get_name() : $product->post->post_title;
                
                // Compare
                if ( $original_name == 'Build Your Own') {
                    $meta = wc_get_formatted_cart_item_data( $cart_item, true );
                    $sMeta = substr( $meta, -7 );
                    $new_name = $original_name . ' - ' . $sMeta;
                    
                    // Set name
                    if( method_exists( $product, 'set_name' ) ) {
                        $product->set_name( $new_name );
                    } else {
                        $product->post->post_title = $new_name;
                    }
                } else {
                    $meta = wc_get_formatted_cart_item_data( $cart_item, true );
                    
                    // NOT empty
                    if ( ! empty( $meta ) ) {
                        // Hide remove button
                        $link = '';
                    }
                }
            }
        }
    }

    return $link;
}
add_filter( 'woocommerce_cart_item_remove_link', 'filter_woocommerce_cart_item_remove_link', 10, 2 );