Chia sẻ 20 đoạn code tối ưu dành cho Functions.php WooCommerce

Thảo luận trong 'Chia sẻ mã nguồn - Share code' bắt đầu bởi cuongteam, 15/2/20.

  1. cuongteam

    cuongteam Member

    Bài viết:
    36
    Đã thích:
    1
    Hồi đầu tuần mình có tổng hợp các đoạn code dành cho Functions.php cho Wordpress. Hôm nay mình tiếp tục với WooCommerce nha ! Lần này là thêm bớt tính năng cho WooCommerce ạ.

    Mình tổng hợp từ nhiều nguồn để anh em ko phải khó khăn khi search Google nữa ! :D

    Thêm tên khách hàng vào tiêu đề của Mail Đơn Hàng
    Mã:
    add_filter( 'woocommerce_email_subject_customer_processing_order', 'bbloomer_change_processing_email_subject', 10, 2 );
     
    function bbloomer_change_processing_email_subject( $subject, $order ) {
       $subject = $order->get_billing_first_name() . ', thanks for your order!';
       return $subject;
    }
    Thay đoạn “Thanks for your order!” thành “Cảm ơn bạn đã đặt hàng” cũng được nhé !


    Ẩn sản phẩm liên quan trong trang giỏ hàng (Cart)


    Mã:
    // Remove cross-sells at cart
     
    remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' );

    Rút gọn tên sản phẩm


    Mình từng làm website cho các shop bán sách Ebook. Có những tên sách dài ngoằn tầm 4 5 dòng.
    Làm mất đi cân bằng của trang Cửa Hàng. Vì vậy mình share giải pháp ở đây:

    Cách 1: Rút gọn bằng CSS

    Mã:
     .woocommerce ul.products li.product h3 {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    }
    Cách 2: Thêm vào Functions.php

    Giới hạn chữ:

    Mã:
    function shorten_woo_product_title( $title, $id ) {
    if ( is_shop() && get_post_type( $id ) === 'product' ) {
    return wp_trim_words( $title, 4 ); // Thay số 4 bằng số chữ mà bạn muốn
    } else {
    return $title;
    }
    }
    Giới hạn ký tự
    Mã:
    add_filter( 'the_title', 'shorten_woo_product_title', 10, 2 );
    function shorten_woo_product_title( $title, $id ) {
    if ( is_shop() && get_post_type( $id ) === 'product' ) {
    return substr( $title, 0, 15 ); // Thay số 15 bằng số ký tự mà bạn muốn
    } else {
    return $title;
    }
    }

    Thêm phương thức thanh toán vào Email Đơn Hàng


    Mặc định email đơn hàng sẽ không kèm phương thức thanh toán trong đó. Nếu bạn muốn thì add đoạn này vào file Functions.php nhé !

    Mã:
    // Add payment method to order email
     
    add_action( 'woocommerce_email_after_order_table', 'wc_add_payment_type_to_emails', 15, 2 );
     
    function wc_add_payment_type_to_emails( $order, $is_admin_email ) {
    echo '<h2>Payment Type:</h2><p> ' . $order->payment_method_title . '</p>';
    }

    Hiển thị giá đã giảm sau khi áp dụng mã giảm giá (Coupon) trong giỏ hàng (Cart)


    Mã:
    add_filter( 'woocommerce_cart_item_subtotal', 'bbloomer_if_coupon_slash_item_subtotal', 99, 3 );
     
    function bbloomer_if_coupon_slash_item_subtotal( $subtotal, $cart_item, $cart_item_key ){
    global $woocommerce;
     
    // Note: use your own coupon code here
    $coupon_code = 'barmada';
     
    if ( $woocommerce->cart->has_discount( $coupon_code )) {
     
    // Note: apply your own coupon discount multiplier here
    // In this case, it's a 99% discount, hence I multiply by 0.01
    $newsubtotal = wc_price( $cart_item['data']->get_price() * 0.01 * $cart_item['quantity'] );
     
    $subtotal = sprintf( '<s>%s</s> %s', $subtotal, $newsubtotal );
    }
     
    return $subtotal;
    }

    Hiển thị tổng số tiền chưa giảm & đã giảm trong trang giỏ hàng (Cart)


    Mã:
    add_filter( 'woocommerce_cart_subtotal', 'bbloomer_slash_cart_subtotal_if_discount', 99, 3 );
     
    function bbloomer_slash_cart_subtotal_if_discount( $cart_subtotal, $compound, $obj ){
    global $woocommerce;
    if ( $woocommerce->cart->get_cart_discount_total() <> 0 ) {
    $new_cart_subtotal = wc_price( WC()->cart->subtotal - $woocommerce->cart->get_cart_discount_tax_total() - $woocommerce->cart->get_cart_discount_total() );
    $cart_subtotal = sprintf( '<del>%s</del> <b>%s</b>', $cart_subtotal , $new_cart_subtotal );
    }
    return $cart_subtotal;
    }

    Hiển thị danh mục cho mỗi sản phẩm trong trang giỏ hàng


    Mã:
    add_filter( 'woocommerce_cart_item_name', 'bbloomer_cart_item_category', 99, 3);
     
    function bbloomer_cart_item_category( $name, $cart_item, $cart_item_key ) {
     
    $product_item = $cart_item['data'];
     
    // make sure to get parent product if variation
    if ( $product_item->is_type( 'variation' ) ) {
    $product_item = wc_get_product( $product_item->get_parent_id() );
    }
     
    $cat_ids = $product_item->get_category_ids();
     
    // if product has categories, concatenate cart item name with them
    if ( $cat_ids ) $name .= '</br>' . wc_get_product_category_list( $product_item->get_id(), ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', count( $cat_ids ), 'woocommerce' ) . ' ', '</span>' );
     
    return $name;
     
    }

    Hiển thị dòng chữ: “Bạn tiết kiệm được” trong trang giỏ hàng


    Đôi khi khách hàng muốn biết trong số sản phẩm giảm giá họ mua là họ đã được giảm giá tổng cộng bao nhiêu, thì đây là code hiển thị nó.


    Mã:
    function bbloomer_wc_discount_total_30() {
     
        global $woocommerce;
     
        $discount_total = 0;
     
        foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values) {
         
       $_product = $values['data'];
     
            if ( $_product->is_on_sale() ) {
            $regular_price = $_product->get_regular_price();
            $sale_price = $_product->get_sale_price();
            $discount = ($regular_price - $sale_price) * $values['quantity'];
            $discount_total += $discount;
            }
     
        }
           
        if ( $discount_total > 0 ) {
        echo '<tr class="cart-discount">
        <th>'. __( 'You Saved', 'woocommerce' ) .'</th>
        <td data-title=" '. __( 'Bạn Tiết Kiệm Được:', 'woocommerce' ) .' ">'
        . wc_price( $discount_total + $woocommerce->cart->discount_cart ) .'</td>
        </tr>';
        }
     
    }
     
    // Hook our values to the Basket and Checkout pages
     
    add_action( 'woocommerce_cart_totals_after_order_total', 'bbloomer_wc_discount_total_30', 99);
    add_action( 'woocommerce_review_order_after_order_total', 'bbloomer_wc_discount_total_30', 99);

    Hiện số lượng sản phẩm đã bán


    Mã:
    add_action( 'woocommerce_single_product_summary', 'bbloomer_product_sold_count_1_week', 11 );
     
    function bbloomer_product_sold_count_1_week() {
       global $product;
     
       // GET LAST WEEK ORDERS
       $all_orders = wc_get_orders(
          array(
             'limit' => -1,
             'status' => array_map( 'wc_get_order_status_name', wc_get_is_paid_statuses() ),
             'date_after' => date( 'Y-m-d', strtotime( '-1 week' ) ),
             'return' => 'ids',
          )
       );
     
       // LOOP THROUGH ORDERS AND SUM QUANTITIES PURCHASED
       $count = 0;
       foreach ( $all_orders as $all_order ) {
          $order = wc_get_order( $all_order );
          $items = $order->get_items();
          foreach ( $items as $item ) {
             $product_id = $item->get_product_id();
             if ( $product_id == $product->get_id() ) {
                $count = $count + absint( $item['qty'] );
             }
          }
       }
     
       if ( $count > 0 ) echo "<p>Sản phẩm này đã bán được: $count</p>";
    }

    Xóa chữ CỬA HÀNG (SHOP) ở trang Cửa Hàng


    Mã:
    add_filter( 'woocommerce_show_page_title', 'bbloomer_hide_shop_page_title' );
     
    function bbloomer_hide_shop_page_title( $title ) {
       if ( is_shop() ) $title = false;
       return $title;
    }
    Nhiều code quá copy ko xuể, các bạn ủng hộ mình bằng cách xem tiếp 10 cái còn lại và cho mình 1 traffic tại đây nhaaaa !

    Link bài viết Cuồng Team: https://cuongteam.com/thu-thuat-voi-file-functions-php-woocommerce.htm

    Cảm ơn mọi người đã ủng hộ :D
     
    Đang tải...
  2. An Thuận Phước

    An Thuận Phước Member

    Bài viết:
    52
    Đã thích:
    3
    Để em lưu lại, về test thử, thank chủ thớt :D:D
     
    cuongteam thích bài này.
  3. cuongteam

    cuongteam Member

    Bài viết:
    36
    Đã thích:
    1
    Backup lại trước file cũ nha bạn ưiiiii !! Cảm ơn bạn đã ủng hộ Cuồng team :D :D :D
     
  4. DamVan

    DamVan New Member

    Bài viết:
    8
    Đã thích:
    0
    Wow, đúng cái mình đang cần luôn, cảm ơn bạn rất nhiều nhé!
     
Tags:
Đang tải...
Đang tải...