Đoạn code tăng tỷ lệ chuyển đổi cho Woocommerce (cập nhật liên tục )

0 Shares

1.Chuyển hướng đến trang tùy chỉnh sau khi thêm vào giỏ hàng Woocommerce

A zô A zô. Xin chào mọi người, đợt vừa rồi mình có làm website bán hàng cho 1 vị khách khá đặc biệt. Shop của a ấy chỉ có 2 sản phẩm mà thôi. Mình có gợi ý a ấy sử dụng upsell cho 2 sản phẩm này. Tùy nhiên anh ấy lại chỉ thích làm sao để khách thêm vào giỏ hàng sản phẩm A thì chuyển sang trang sản phẩm B sau đó mới tới trang thanh toán, kiểu gợi nhắc khách hàng mua sản phẩm B ấy .

Coppy đoạn code và chèn vào function.php của theme bạn đang sử dụng

function custom_add_to_cart_redirect() { 
    return 'https://buzzmarketing.vn/who-am-i.html'; 
}
add_filter( 'woocommerce_add_to_cart_redirect', 'custom_add_to_cart_redirect' );

2.Code chuyển 0đ thành chữ “Liên hệ”

function devvn_wc_custom_get_price_html( $price, $product ) {
    if ( $product->get_price() == 0 ) {
        if ( $product->is_on_sale() && $product->get_regular_price() ) {
            $regular_price = wc_get_price_to_display( $product, array( 'qty' => 1, 'price' => $product->get_regular_price() ) );
 
            $price = wc_format_price_range( $regular_price, __( 'Free!', 'woocommerce' ) );
        } else {
            $price = '<span class="amount">' . __( 'Liên hệ', 'woocommerce' ) . '</span>';
        }
    }
    return $price;
}
add_filter( 'woocommerce_get_price_html', 'devvn_wc_custom_get_price_html', 10, 2 );

3.Chuyển giá thành “Liên hệ” khi hết hàng

Đoạn code này sẽ giúp bạn hiển thị giá thành chữ “Liên hệ” khi set sản phẩm đó là hết hàng. Chỉ cần thêm đoạn code sau vào functions.php của theme đang active là được

function devvn_oft_custom_get_price_html( $price, $product ) {
    if ( !is_admin() && !$product->is_in_stock()) {
       $price = '<span class="amount">' . __( 'Liên hệ', 'woocommerce' ) . '</span>';
    }
    return $price;
}
add_filter( 'woocommerce_get_price_html', 'devvn_oft_custom_get_price_html', 99, 2 );

4.Cóa bỏ chữ “product”trong đường dẫn

Trước hết các bạn dán đoạn code sau vào file functions.php của theme đang sử dụng. Sau đó hãy update lại permalink (Setting -> Permalinks -> Save changes) và thưởng thức thành quả.

Chú ý:

  1. Copy và dán đúng cú pháp PHP. Nhiều bạn có cái dấu mở PHP (<?php) tống cả vào mà không để ý rồi lỗi cả web cứ inbox bảo code làm sao …
  2. Tại dòng số 11 trong code bên dưới đang để là /cua-hang/ các bạn thay chữ đó thành slug hiện tại của web… vào Setting -> Permalink để kiểm tra slug hiện tại là gì (thường là /product/ hoặc /shop/ …)
&amp;lt;?php /* * Code Bỏ /product/ hoặc /cua-hang/ hoặc /shop/ ... có hỗ trợ dạng %product_cat% * Thay /cua-hang/ bằng slug hiện tại của bạn */ function devvn_remove_slug( $post_link, $post ) { if ( !in_array( get_post_type($post), array( 'product' ) ) || 'publish' != $post-&amp;gt;post_status ) {
        return $post_link;
    }
    if('product' == $post-&amp;gt;post_type){
        $post_link = str_replace( '/cua-hang/', '/', $post_link ); //Thay cua-hang bằng slug hiện tại của bạn
    }else{
        $post_link = str_replace( '/' . $post-&amp;gt;post_type . '/', '/', $post_link );
    }
    return $post_link;
}
add_filter( 'post_type_link', 'devvn_remove_slug', 10, 2 );
/*Sửa lỗi 404 sau khi đã remove slug product hoặc cua-hang*/
function devvn_woo_product_rewrite_rules($flash = false) {
    global $wp_post_types, $wpdb;
    $siteLink = esc_url(home_url('/'));
    foreach ($wp_post_types as $type=&amp;gt;$custom_post) {
        if($type == 'product'){
            if ($custom_post-&amp;gt;_builtin == false) {
                $querystr = "SELECT {$wpdb-&amp;gt;posts}.post_name, {$wpdb-&amp;gt;posts}.ID
                            FROM {$wpdb-&amp;gt;posts} 
                            WHERE {$wpdb-&amp;gt;posts}.post_status = 'publish' 
                            AND {$wpdb-&amp;gt;posts}.post_type = '{$type}'";
                $posts = $wpdb-&amp;gt;get_results($querystr, OBJECT);
                foreach ($posts as $post) {
                    $current_slug = get_permalink($post-&amp;gt;ID);
                    $base_product = str_replace($siteLink,'',$current_slug);
                    add_rewrite_rule($base_product.'?$', "index.php?{$custom_post-&amp;gt;query_var}={$post-&amp;gt;post_name}", 'top');                    
                    add_rewrite_rule($base_product.'comment-page-([0-9]{1,})/?$', 'index.php?'.$custom_post-&amp;gt;query_var.'='.$post-&amp;gt;post_name.'&amp;amp;cpage=$matches[1]', 'top');
                    add_rewrite_rule($base_product.'(?:feed/)?(feed|rdf|rss|rss2|atom)/?$', 'index.php?'.$custom_post-&amp;gt;query_var.'='.$post-&amp;gt;post_name.'&amp;amp;feed=$matches[1]','top');
                }
            }
        }
    }
    if ($flash == true)
        flush_rewrite_rules(false);
}
add_action('init', 'devvn_woo_product_rewrite_rules');
/*Fix lỗi khi tạo sản phẩm mới bị 404*/
function devvn_woo_new_product_post_save($post_id){
    global $wp_post_types;
    $post_type = get_post_type($post_id);
    foreach ($wp_post_types as $type=&amp;gt;$custom_post) {
        if ($custom_post-&amp;gt;_builtin == false &amp;amp;&amp;amp; $type == $post_type) {
            devvn_woo_product_rewrite_rules(true);
        }
    }
}
add_action('wp_insert_post', 'devvn_woo_new_product_post_save');

5.Xóa bỏ product-category và đường dẫn cha ra khỏi Woocommerce

// Remove product cat base
add_filter('term_link', 'devvn_no_term_parents', 1000, 3);
function devvn_no_term_parents($url, $term, $taxonomy) {
    if($taxonomy == 'product_cat'){
        $term_nicename = $term-&gt;slug;
        $url = trailingslashit(get_option( 'home' )) . user_trailingslashit( $term_nicename, 'category' );
    }
    return $url;
}
 
// Add our custom product cat rewrite rules
function devvn_no_product_cat_parents_rewrite_rules($flash = false) {
    $terms = get_terms( array(
        'taxonomy' =&gt; 'product_cat',
        'post_type' =&gt; 'product',
        'hide_empty' =&gt; false,
    ));
    if($terms &amp;&amp; !is_wp_error($terms)){
        foreach ($terms as $term){
            $term_slug = $term-&gt;slug;
            add_rewrite_rule($term_slug.'/?$', 'index.php?product_cat='.$term_slug,'top');
            add_rewrite_rule($term_slug.'/page/([0-9]{1,})/?$', 'index.php?product_cat='.$term_slug.'&amp;paged=$matches[1]','top');
            add_rewrite_rule($term_slug.'/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$', 'index.php?product_cat='.$term_slug.'&amp;feed=$matches[1]','top');
        }
    }
    if ($flash == true)
        flush_rewrite_rules(false);
}
add_action('init', 'devvn_no_product_cat_parents_rewrite_rules');
 
/*Sửa lỗi khi tạo mới taxomony bị 404*/
add_action( 'create_term', 'devvn_new_product_cat_edit_success', 10, 2 );
function devvn_new_product_cat_edit_success( $term_id, $taxonomy ) {
    devvn_no_product_cat_parents_rewrite_rules(true);
}

Chú ý: Nếu sau khi làm xong mà bị lỗi phân trang (/page/2 – 404 not found) là do ở phần permalink của Posts có dạng .html. Các bạn sửa như sau

Sửa code dòng 30,31 ở trên thành đoạn này

add_rewrite_rule($baseterm.'/page/([0-9]{1,})?$', 'index.php?product_cat='.$term_slug.'&paged=$matches[1]','top');
add_rewrite_rule($baseterm.'/(?:feed/)?(feed|rdf|rss|rss2|atom)?$', 'index.php?product_cat='.$term_slug.'&feed=$matches[1]','top');

Bài viết được tham khảo tại Stackoverflow và levantoan Devvn

0 Shares
admin
 

>
0 Shares
Share
+1
Pin