Code cơ bản trong lập trình wordpress

Float menu đẹp cực đơn giản cho wordpress

<style>
.menu-float-right {
    width: 100px;
    position: fixed;
    top: 104px;
    right: 0;
    z-index: 99999;
}
.menu-float-right #group {
    position: absolute;
    right: 0px;
}
.menu-float-right ul {
    padding: 0;
}
.menu-float-right #group ul{background-color:rgba(0,0,0,0.3);}
.menu-float-right #group ul li {
    position: relative;
    list-style: none;
    margin-bottom: 0;
    width: 80px;
    height: 75px;
    text-align: center;
    padding: 10px;
}
.menu-float-right #group ul li:hover{background-color:rgba(255,255,255,0.3);}
.menu-float-right #group ul li:nth-child(1n+1){
    border-top:1px solid #ddd;
}
.menu-float-right #group ul li img {
    border-radius: 5px;
}
.menu-float-right #group ul li .mo-ta {
    font-size: 12px;
    text-align: center;
    color: rgb(255, 255, 255);
    position: absolute;
    width: 90%;
    left: 5%;
    bottom: 5%;
    margin-bottom: 0px;
}
.menu-float-right #group ul li a{display:block;width:100%;height:100%;}
</style>
<div class="menu-float-right">
      <div id="group">
         <ul>
             <li class="ho-tro">
                 <a href="tel:09000000" target="blank"><img src="https://muathemedep.com/wp-content/uploads/2020/03/icon_1.png" >
                    <p class="mo-ta">Hổ Trợ</p>
                 </a>
                  
             </li>
             <li class="vi-ber">
                 <a href="tel:09000000" target="blank"><img src="https://muathemedep.com/wp-content/uploads/2020/03/icon_2.png" >
                 <p class="mo-ta">Viber</p></a>
             </li>
             <li class="za-lo">
                 <a href="tel:09000000" target="blank"><img src="https://muathemedep.com/wp-content/uploads/2020/03/icon_3.png" >
                 <p class="mo-ta">Zalo</p></a>
             </li>
              
             <li class="lien-he">
                 <a href="tel:09000000"  target="blank"><img src="https://muathemedep.com/wp-content/uploads/2020/03/icon_4.png">
                 <p class="mo-ta">Điện thoại</p></a>
             </li>
             <li class="lien-he">
                 <a href="tel:09000000"  target="blank"><img src="https://muathemedep.com/wp-content/uploads/2020/03/icon_5.png">
                 <p class="mo-ta">Hỗ trợ xa</p></a>
             </li>
             <li class="lien-he">
                 <a href="tel:09000000"  target="blank"><img src="https://muathemedep.com/wp-content/uploads/2020/03/icon_6.png">
                 <p class="mo-ta">Khiếu nai</p></a>
             </li>
             <li id="back_to_top" >
                 <a href="#"><img src="https://muathemedep.com/wp-content/uploads/2020/03/icon_7.png" >
                 <p class="mo-ta">Thông báo</p></a>
             </li>
         </ul>
     </div>
 </div>

Code tạo nút liên hệ nhanh bằng HTML và CSS cho website

<style>
.phone-mobile {display: none;}
.giuseart-nav {
    position: fixed;
    left: 13px;
    background: #fff;
    border-radius: 5px;
    width: auto;
    z-index: 150;
    bottom: 50px;
    padding: 10px 0;
    border: 1px solid #f2f2f2;
}
.giuseart-nav ul {list-style: none;padding: 0;margin: 0;}
.giuseart-nav ul li {list-style: none!important;}
.giuseart-nav ul>li a {
    border:none;
    padding: 3px;
    display: block;
    border-radius: 5px;
    text-align: center;
    font-size: 10px;
    line-height: 15px;
    color: #515151;
    font-weight: 700;
    max-width: 72.19px;
    max-height: 54px;
    text-decoration: none;
}
.giuseart-nav ul>li .chat_animation{display:none}
.giuseart-nav ul>li a i.ticon-heart {
    background: url(https://muathemedep.com/wp-content/uploads/2020/03/icon-map.png) no-repeat;
    background-size: contain;
    width: 36px;
    height: 36px;
    display: block;
}
.giuseart-nav ul>li a i.ticon-zalo-circle2 {
    background: url(https://muathemedep.com/wp-content/uploads/2020/03/icon-zalo-circle2.png.pagespeed.ce_.iUc59tfITH.png) no-repeat;
    background-size: contain;
    width: 36px;
    height: 36px;
    display: block;
}.giuseart-nav li .button {
    background: transparent;
}.giuseart-nav ul>li a i.ticon-angle-up {
    background: url(https://muathemedep.com/wp-content/uploads/2020/03/icon-angle-up.png.pagespeed.ce_.NGU5VowWiC.png) no-repeat;
    background-size: contain;
    width: 36px;
    height: 36px;
    display: block;
}.giuseart-nav ul>li a i {
    width: 33px;
    height: 33px;
    display: block;
    margin: auto;
}.giuseart-nav ul li .button .btn_phone_txt {
    position: relative; top:35px;
    font-size: 10px;
    font-weight: bold;
    text-transform: none;
}
.giuseart-nav ul li .button .phone_animation i {
    display: inline-block;
    width: 27px;
    font-size: 26px;
    margin-top: 12px;
}.giuseart-nav ul>li a.chat_animation svg {
    margin: -13px 0 -20px;
}
.giuseart-nav ul>li a i.ticon-messenger {
    background: url(https://muathemedep.com/wp-content/uploads/2020/03/icon-messenger.png.pagespeed.ce_.sSebhnGGgP.png) no-repeat;
    background-size: contain;
    width: 36px;
    height: 36px;
    display: block;
}.giuseart-nav ul li .button .phone_animation i {
    display: inline-block;
    width: 27px;
    font-size: 26px;
    margin-top: 12px;
}
.giuseart-nav ul>li a i.ticon-chat-sms {
    background: url(https://muathemedep.com/wp-content/uploads/2020/03/icon-sms-1.jpg) no-repeat;
    background-size: contain;
    width: 38px;
    height: 36px;
    display: block;
}
.giuseart-nav ul>li a i.icon-phone-w {
    background: url(https://muathemedep.com/wp-content/uploads/2020/03/icon-phone-w.png) no-repeat;
    background-size: contain;}
.giuseart-nav ul li .button .btn_phone_txt {
    position: relative;
}
@media only screen and (max-width: 600px){
.giuseart-nav li .chat_animation{display:block !Important}
 
.giuseart-nav li .button .phone_animation {box-shadow: none;
    position: absolute;
    top: -16px;
    left: 50%;
    transform: translate(-50%,0);
    width: 50px;
    height: 50px;
    border-radius: 100%;
    background: #6cb917;
    line-height: 15px;
    border: 2px solid white;
}
.giuseart-nav ul>li a{padding:0; margin:0 auto}
.giuseart-nav {
    background: white;
    width: 100%; border-radius:0;
    color: #fff;
    height: 60px;
    line-height: 50px;
    position: fixed;
    bottom: 0;
    left: 0;
    z-index: 999;
    padding: 5px;
    margin: 0;
    box-shadow: 0 4px 10px 0 #000;
}
.giuseart-nav li {
    float: left;
    width: 20%;
    list-style: none;
    height: 50px;
}
.phone-mobile{display:block !important}}
</style>
<div class="giuseart-nav">
        <ul>
            <li><a href="https://www.google.com/maps/place/GiuseArt+-+Thi%E1%BA%BFt+k%E1%BA%BF+%C4%91%E1%BB%93+h%E1%BB%8Da+v%C3%A0+website+chuy%C3%AAn+nghi%E1%BB%87p/@20.3534004,105.894187,17z/data=!3m1!4b1!4m5!3m4!1s0x3135acc6066cb537:0x4fc1c256d7cdb4d!8m2!3d20.3533954!4d105.8963757" rel="nofollow" target="_blank"><i class="ticon-heart"></i>Tìm đường</a></li>
            <li><a href="https://zalo.me/0918992587" rel="nofollow" target="_blank"><i class="ticon-zalo-circle2"></i>Chat Zalo</a></li>
                        <li class="phone-mobile">
                            <a href="tel:0918992587" rel="nofollow" class="button">
                                <span class="phone_animation animation-shadow">
                                    <i class="icon-phone-w" aria-hidden="true"></i>
                                </span>
                                <span class="btn_phone_txt">Gọi điện</span>
                            </a>
                        </li>
                        <li><a href="https://www.messenger.com/t/erontran.co" rel="nofollow" target="_blank"><i class="ticon-messenger"></i>Messenger</a></li>
            <li><a href="sms:0972939830" class="chat_animation">
            <i class="ticon-chat-sms" aria-hidden="true" title="Nhắn tin sms"></i>
                Nhắn tin SMS</a>
            </li>
            <li class="to-top-pc">
                <a href="#" rel="nofollow">
                    <i class="ticon-angle-up" aria-hidden="true" title="Quay lên trên"></i>
                </a>
            </li>
        </ul>
    </div>

Code hay sử dụng với sản phẩm trong WooCommerce

// Get Product ID
  
$product->get_id(); (fixes the error: "Notice: id was called incorrectly. Product properties should not be accessed directly")
  
// Nhận thông tin chung về sản phẩm
  
$product->get_type();
$product->get_name();
$product->get_slug();
$product->get_date_created();
$product->get_date_modified();
$product->get_status();
$product->get_featured();
$product->get_catalog_visibility();
$product->get_description();
$product->get_short_description();
$product->get_sku();
$product->get_menu_order();
$product->get_virtual();
get_permalink( $product->get_id() );
  
// Lấy giá sản phẩm
  
$product->get_price();
$product->get_regular_price();
$product->get_sale_price();
$product->get_date_on_sale_from();
$product->get_date_on_sale_to();
$product->get_total_sales();
  
// Lấy Product Tax, Shipping & Stock
  
$product->get_tax_status();
$product->get_tax_class();
$product->get_manage_stock();
$product->get_stock_quantity();
$product->get_stock_status();
$product->get_backorders();
$product->get_sold_individually();
$product->get_purchase_note();
$product->get_shipping_class_id();
  
// Lấy kích thước sản phẩm
  
$product->get_weight();
$product->get_length();
$product->get_width();
$product->get_height();
$product->get_dimensions();
  
// Lấy link sản phẩm
  
$product->get_upsell_ids();
$product->get_cross_sell_ids();
$product->get_parent_id();
  
// Lấy các thuộc tính
  
$product->get_attributes();
$product->get_default_attributes();
  
// Get Product Taxonomies
  
$product->get_categories();
$product->get_category_ids();
$product->get_tag_ids();
  
// Get Product Downloads
  
$product->get_downloads();
$product->get_download_expiry();
$product->get_downloadable();
$product->get_download_limit();
  
// Get Product Images
  
$product->get_image_id();
$product->get_image();
$product->get_gallery_image_ids();
  
// Get Product Reviews
  
$product->get_reviews_allowed();
$product->get_rating_counts();
$product->get_average_rating();
$product->get_review_count();

Thêm checkbox tôi là người nhận trong Woocommerce

<script type="text/javascript">
jQuery.noConflict();
jQuery( document ).ready(function( $ ) {
 var check;
jQuery("#toi_nhan").on("click", function(){
    check = jQuery("#toi_nhan").prop("checked");
    if(check) {
         jQuery('#ship-to-different-address-checkbox').attr('checked', false);
    } else {
         jQuery('#ship-to-different-address-checkbox').attr('checked', true);
    }
}); 
});
 
 
</script>

Code tự động lưu ảnh từ web khác về sever mình:

class Auto_Save_Images{
 
    function __construct(){     
        
        add_filter( 'content_save_pre',array($this,'post_save_images') ); 
    }
    
    function post_save_images( $content ){
        if( ($_POST['save'] || $_POST['publish'] )){
            set_time_limit(240);
            global $post;
            $post_id=$post->ID;
            $preg=preg_match_all('/<img.*?src="(.*?)"/',stripslashes($content),$matches); if($preg){ foreach($matches[1] as $image_url){ if(empty($image_url)) continue; $pos=strpos($image_url,$_SERVER['HTTP_HOST']); if($pos===false){ $res=$this->save_images($image_url,$post_id);
                        $replace=$res['url'];
                        $content=str_replace($image_url,$replace,$content);
                    }
                }
            }
        }
        remove_filter( 'content_save_pre', array( $this, 'post_save_images' ) );
        return $content;
    }
    
    function save_images($image_url,$post_id){
        $file=file_get_contents($image_url);
        $post = get_post($post_id);
        $posttitle = $post->post_title;
        $postname = sanitize_title($posttitle);
        $im_name = "$postname-$post_id.jpg";
        $res=wp_upload_bits($im_name,'',$file);
        $this->insert_attachment($res['file'],$post_id);
        return $res;
    }
    
    function insert_attachment($file,$id){
        $dirs=wp_upload_dir();
        $filetype=wp_check_filetype($file);
        $attachment=array(
            'guid'=>$dirs['baseurl'].'/'._wp_relative_upload_path($file),
            'post_mime_type'=>$filetype['type'],
            'post_title'=>preg_replace('/\.[^.]+$/','',basename($file)),
            'post_content'=>'',
            'post_status'=>'inherit'
        );
        $attach_id=wp_insert_attachment($attachment,$file,$id);
        $attach_data=wp_generate_attachment_metadata($attach_id,$file);
        wp_update_attachment_metadata($attach_id,$attach_data);
        return $attach_id;
    }
}
new Auto_Save_Images();

Code nếu sản phẩm không có giá sẽ hiển thị Liên hệ:

add_filter('woocommerce_empty_price_html', 'custom_call_for_price');

function custom_call_for_price() {
return '<span class="lien-he-price">Liên hệ</span>';
}

Code bỏ nút Thêm vào giỏ hàng:

remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

Code bỏ phần đánh giá trong trang chi tiết giỏ hàng:

//bỏ đánh giá
add_filter( 'woocommerce_product_tabs', 'wcs_woo_remove_reviews_tab', 98 );
    function wcs_woo_remove_reviews_tab($tabs) {
    unset($tabs['reviews']);
    return $tabs;
}

Code dịch những từ cứng đầu trong Woocormerce

// Dịch woocommerce

function ra_change_translate_text( $translated_text ) {
if ( $translated_text == 'Old Text' ) {
$translated_text = 'New Translation';
}
return $translated_text;
}
add_filter( 'gettext', 'ra_change_translate_text', 20 );
function ra_change_translate_text_multiple( $translated ) {
$text = array(
'Continue Shopping' => 'Tiếp tục mua hàng',
'Update cart' => 'Cập nhật giỏ hàng',
'Apply Coupon' => 'Áp dụng mã ưu đãi',
'WooCommerce' => 'Quản lý bán hàng',

);
$translated = str_ireplace( array_keys($text), $text, $translated );
return $translated;
}
add_filter( 'gettext', 'ra_change_translate_text_multiple', 20 );
// End dich

Code chèn lightbox tự động hiện ra khi load web (Dùng cho Flatsome):





<a id="register-link" href="#"><img src="https://apaxenglish.com/public/images/regist.png" alt="Đăng ký học" /></a>

Code thêm 1 Tab mới trong Woo:

    add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {
    
    // Adds the new tab
    
    $tabs['test_tab'] = array(
        'title'     => __( 'Lịch trình chi tiết', 'woocommerce' ),
        'priority'  => 50,
        'callback'  => 'woo_new_product_tab_content'
    );

    return $tabs;

}
function woo_new_product_tab_content() {

    // The new tab content
   echo "Nội dung";
   
    
}

Code xóa đoạn slug featured_item trong Porfolio :

function ah_remove_custom_post_type_slug( $post_link, $post, $leavename ) {
 
    if ( ! in_array( $post->post_type, array( 'featured_item' ) ) || 'publish' != $post->post_status )
        return $post_link;
 
    $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
 
    return $post_link;
}
add_filter( 'post_type_link', 'ah_remove_custom_post_type_slug', 10, 3 );
 
function ah_parse_request_tricksy( $query ) {
    
    if ( ! $query->is_main_query() )
        return;
 
    if ( 2 != count( $query->query )
        || ! isset( $query->query['page'] ) )
        return;
 
    if ( ! empty( $query->query['name'] ) )
        $query->set( 'post_type', array( 'post', 'featured_item', 'page' ) );
}
add_action( 'pre_get_posts', 'ah_parse_request_tricksy' );

Đoạn code xóa Featured_item_category trong porfolio:

add_filter('request', 'rudr_change_term_request', 1, 1 );
 
function rudr_change_term_request($query){
 
    $tax_name = 'featured_item_category'; // specify you taxonomy name here, it can be also 'category' or 'post_tag'
 
    // Request for child terms differs, we should make an additional check
    if( $query['attachment'] ) :
        $include_children = true;
        $name = $query['attachment'];
    else:
        $include_children = false;
        $name = $query['name'];
    endif;
 
 
    $term = get_term_by('slug', $name, $tax_name); // get the current term to make sure it exists
 
    if (isset($name) && $term && !is_wp_error($term)): // check it here
 
        if( $include_children ) {
            unset($query['attachment']);
            $parent = $term->parent;
            while( $parent ) {
                $parent_term = get_term( $parent, $tax_name);
                $name = $parent_term->slug . '/' . $name;
                $parent = $parent_term->parent;
            }
        } else {
            unset($query['name']);
        }
 
        switch( $tax_name ):
            case 'category':{
                $query['category_name'] = $name; // for categories
                break;
            }
            case 'post_tag':{
                $query['tag'] = $name; // for post tags
                break;
            }
            default:{
                $query[$tax_name] = $name; // for another taxonomies
                break;
            }
        endswitch;
 
    endif;
 
    return $query;
 
}
 
 
add_filter( 'term_link', 'rudr_term_permalink', 10, 3 );
 
function rudr_term_permalink( $url, $term, $taxonomy ){
 
    $taxonomy_name = 'featured_item_category'; // your taxonomy name here
    $taxonomy_slug = 'featured_item_category'; // the taxonomy slug can be different with the taxonomy name (like 'post_tag' and 'tag' )
 
    // exit the function if taxonomy slug is not in URL
    if ( strpos($url, $taxonomy_slug) === FALSE || $taxonomy != $taxonomy_name ) return $url;
 
    $url = str_replace('/' . $taxonomy_slug, '', $url);
 
    return $url;
}

Code hiện tất cả category của 1 custom post type:

<?php $terms = get_terms( 'nameofyourregisteredtaxonomygoeshere' ); $count = count( $terms ); if ( $count > 0 ) {
echo '





<h3>Total Projects: '. $count . '</h3>






';
echo '





<ul>';
foreach ( $terms as $term ) {
    echo '





<li>';
    echo '<a href="' . esc_url( get_term_link( $term ) ) . '" alt="'. esc_attr( sprintf( __( 'View all post filed under %s', 'my_localization_domain' ), $term->name ) ) . '">' . $term->name . '</a>';
    echo '</li>






';


}
echo '</ul>






';
}
?>

Code hiện custom taxonomy của 1 product

   global $product;
  $terms = get_the_terms( $product->ID, 'thuong_hieu' );
    foreach($terms as $term) {
      echo 'Thương hiệu: <a href="'.get_site_url().'/thuong_hieu/'.$term->slug.'">'.$term->name.'</a>';
    }

Đoạn code thay dấu […] bằng … trong short description:

function new_excerpt_more( $excerpt ) {
    return str_replace( '[...]', '...', $excerpt );
}
add_filter( 'excerpt_more', 'new_excerpt_more' );

Đoạn code bỏ luôn dấu […] Trong short Description (Bao gồm woo):

function new_excerpt_more( $more ) {
    return '';
}
add_filter('excerpt_more', 'new_excerpt_more');

Đoạn Code để tìm kiếm mặc định có thể tìm kiếm được đoạn text trong custom field (Khá hay)

function cf_search_join( $join ) {
    global $wpdb;

    if ( is_search() ) {    
        $join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
    }

    return $join;
}
add_filter('posts_join', 'cf_search_join' );

/**
 * Modify the search query with posts_where
 *
 * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_where
 */
function cf_search_where( $where ) {
    global $pagenow, $wpdb;

    if ( is_search() ) {
        $where = preg_replace(
            "/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
            "(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where );
    }

    return $where;
}
add_filter( 'posts_where', 'cf_search_where' );

/**
 * Prevent duplicates
 *
 * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_distinct
 */
function cf_search_distinct( $where ) {
    global $wpdb;

    if ( is_search() ) {
        return "DISTINCT";
    }

    return $where;
}
add_filter( 'posts_distinct', 'cf_search_distinct' );

Tắt chức năng tìm kiếm content trong WordPress.

Đôi khi bạn cần tìm kiếm một từ khóa, nhưng kết quả tìm kiếm lại cho ra cả những bài viết có chứa từ khóa đó, trong khi đó bạn chỉ muốn tìm kiếm trong title. Vậy bạn copy đoạn code sau cho vào file functions.php là được.

function __search_by_title_only( $search, &$wp_query )
{
    global $wpdb;
    if ( empty( $search ) )
        return $search; // skip processing – no search term in query
    $q = $wp_query->query_vars;
    $n = ! empty( $q['exact'] ) ? '' : '%';
    $search =
    $searchand = '';
    foreach ( (array) $q['search_terms'] as $term ) {
        $term = esc_sql( like_escape( $term ) );
        $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
        $searchand = ' AND ';
    }
    if ( ! empty( $search ) ) {
        $search = " AND ({$search}) ";
        if ( ! is_user_logged_in() )
            $search .= " AND ($wpdb->posts.post_password = '') ";
    }
return $search; } add_filter( 'posts_search', '__search_by_title_only', 500, 2 );

Đoạn code thay đổi giá toàn bộ sản phẩm trong Woo

function update_products_sale_price(){

    $args = array(
        'posts_per_page' => -1,
        'post_type' => 'product',
        'post_status' => 'publish'
    );

    // getting all products
    $products = get_posts( $args );

    // Going through all products
    foreach ( $products as $key => $value ) {

        // the product ID
        $product_id = $value->ID;

        // Getting the product sale price
        $sale_price = get_post_meta($product_id, '_sale_price', true);

        // if product sale price is not defined we give to the variable a 0 value
        if (empty($sale_price))
            $sale_price = 0;

        // Getting the product sale price
        $price = get_post_meta($product_id, '_regular_price', true);

        // udate sale_price to 0 if sale price is bigger than price
        if ($sale_price < $price)
            update_post_meta($product_id, '_sale_price', '3500000');
           // Sua toan bộ giá của sale price thành 3500000. Sau đó tiếp tục chạy một lần nữa, thay _sale_price thành _regular_price để đổi giá gốc
    }
}

// Here the function we will do the job.
update_products_sale_price();

Cấu hình để giỏ hàng chỉ chấp nhận 1 sản phẩm cuối cùng thêm vào giỏ, nếu đã có sản phẩm trước đó thì remove sản phẩm đó đi và add sản phẩm mới vào

// Removing on add to cart if an item is already in cart
add_filter( 'woocommerce_add_cart_item_data', 'remove_before_add_to_cart' );
function remove_before_add_to_cart( $cart_item_data ) {
    WC()->cart->empty_cart();
    return $cart_item_data;
}

// Removing one item on cart item check if there is more than 1 item in cart
add_action( 'template_redirect', 'checking_cart_items' ); // Cart and Checkout
function checking_cart_items() {
    if( sizeof( WC()->cart->get_cart() ) > 1 ){
        $cart_items_keys = array_keys(WC()->cart->get_cart());
        WC()->cart->remove_cart_item($cart_items_keys[0]);
    }
}

Code di chuyển giá của sản phẩm có biến thể lên đầu

add_action( 'woocommerce_single_product_summary', 'move_single_product_variable_price_location', 2 );

function move_single_product_variable_price_location() {
    global $product;

    // Variable product only
    if( $product->is_type('variable') ):

    // removing the price of variable products
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

    // Add back the relocated (customized) price of variable products
    add_action( 'woocommerce_single_product_summary', 'custom_single_product_variable_prices', 10 );

    endif;
}


function custom_single_product_variable_prices(){
    global $product;

    // Main Price
    $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
    $price = $prices[0] !== $prices[1] ? sprintf( __( 'From: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

    // Sale Price
    $prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
    sort( $prices );
    $saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'From: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

    if ( $price !== $saleprice && $product->is_on_sale() ) {
        $price = '<del>' . $saleprice . $product->get_price_suffix() . '</del> <ins>' . $price . $product->get_price_suffix() . '</ins>';
    }

    ?>
    
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cstyle%3E%0A%20%20%20%20%20%20%20%20div.woocommerce-variation-price%2C%0A%20%20%20%20%20%20%20%20div.woocommerce-variation-availability%2C%0A%20%20%20%20%20%20%20%20div.hidden-variable-price%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20height%3A%200px%20!important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20overflow%3Ahidden%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20position%3Arelative%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20line-height%3A%200px%20!important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20font-size%3A%200%25%20!important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20visibility%3A%20hidden%20!important%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%3C%2Fstyle%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;style&gt;" title="&lt;style&gt;" />

    <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E%0A%20%20%20%20%20%20%20%20jQuery(document).ready(function(%24)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20When%20variable%20price%20is%20selected%20by%20default%0A%20%20%20%20%20%20%20%20%20%20%20%20setTimeout(%20function()%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(%200%20%3C%20%24('input.variation_id').val()%20%26%26%20null%20!%3D%20%24('input.variation_id').val()%20)%7B%20if(%24('p.availability'))%20%24('p.availability').remove()%3B%20%24('p.price').html(%24('div.woocommerce-variation-price%20%3E%20span.price').html()).append('%3C%2Fp%3E%0A%3Cp%20class%3D%22availability%22%3E'%2B%24('div.woocommerce-variation-availability').html()%2B'%3C%2Fp%3E%0A%3Cp%3E')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.log(%24('div.woocommerce-variation-availability').html())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20300%20)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20On%20live%20variation%20selection%0A%20%20%20%20%20%20%20%20%20%20%20%20%24('select').blur(%20function()%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(%200%20%3C%20%24('input.variation_id').val()%20%26%26%20null%20!%3D%20%24('input.variation_id').val()%20)%7B%20if(%24('.price%20p.availability')%20%7C%7C%20%24('.price%20p.stock')%20)%20%24('p.price%20p').each(function()%20%7B%20%24(this).remove()%3B%20%7D)%3B%20%24('p.price').html(%24('div.woocommerce-variation-price%20%3E%20span.price').html()).append('%3C%2Fp%3E%0A%3Cp%20class%3D%22availability%22%3E'%2B%24('div.woocommerce-variation-availability').html()%2B'%3C%2Fp%3E%0A%3Cp%3E')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.log(%24('input.variation_id').val())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24('p.price').html(%24('div.hidden-variable-price').html())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(%24('p.availability'))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24('p.availability').remove()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.log('NULL')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
    <?php

    echo '

'.$price.'

    





<div class="hidden-variable-price" >'.$price.'</div>






';
}

CODE HAY THEME FLATSOME:

Thay chữ Tài khoản trên menu thành Xin chào, tên User:

Vào file flatsome\template-parts\header\partials\element-account,tìm chữ My account và thay bằng đoạn code sau:

<?php if ( is_user_logged_in() ) { $user_info = wp_get_current_user(); $user_last_name = $user_info->user_lastname;
    printf( __( 'Xin chào, %s', 'wpdance' ), $user_last_name );
} ?>

Tăng độ dài của mô tả trong trang Category Post.

Vào đường dẫn themes/flatsome/template-parts/posts/archive-list.php, thêm dòng excerpt_length=”100″ vào trong đoạn shortcode. có thể thay đổi số 100 thành số khác để tùy biến độ dài.

Khắc phục tình trạng bị giật giật khi chỉnh sửa trong UX Builder

Bỏ code sau vào file functions.php

<?php // Do not include this if already open! /** * Code goes in theme functions.php * * Temporary fix Chrome 66 frame glitch in UX Builder. */ add_action( 'admin_head', function () { ?>
	
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cstyle%20type%3D%22text%2Fcss%22%3E%0A%09%09.iframe-frame%20%7B%0A%09%09%09box-shadow%3A%20unset%20!important%3B%0A%09%09%7D%0A%09%3C%2Fstyle%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;style&gt;" title="&lt;style&gt;" />

	<?php
} );

Khắc phục lỗi lệch khung web khi có hiệu ứng trên mobile.

Thêm dòng này vào file style.css:

html, body {overflow-x: hidden;}

Khắc phục lỗi Editor hay sinh ra thẻ rỗng:

<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E%0A%09jQuery(document).ready(function()%7B%0AjQuery('p').each(function()%20%7B%0A%20var%20%24this%20%3D%20jQuery(this)%3B%0A%20if(%24this.html().replace(%2F%5Cs%7C%26nbsp%3B%2Fg%2C%20'').length%20%3D%3D%200)%0A%20%20%20%20%20%24this.remove()%3B%20%7D)%3B%20%0A%7D)%3B%0A%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />

Chuyển thuộc tính của sản phẩm từ dưới Tab Thông tin bổ sung lên phía dưới nút Add To Cart:

// Xóa thông tin bổ sung ở dưới tab
add_filter( 'woocommerce_product_tabs', 'remove_additional_information_tab', 100, 1 );
function remove_additional_information_tab( $tabs ) {
    unset($tabs['additional_information']);

    return $tabs;
}
// Thêm thông tin bổ sung phía dưới nút Add to Cart
add_action( 'woocommerce_single_product_summary', 'additional_info_under_add_to_cart', 35 );
function additional_info_under_add_to_cart() {
    global $product;

    if ( $product && ( $product->has_attributes() || apply_filters( 'wc_product_enable_dimensions_display', $product->has_weight() || $product->has_dimensions() ) ) ) {
        wc_display_product_attributes( $product );
    }
}

Gọi mô tả của danh mục sản phẩm ra ngoài:

add_action( 'woocommerce_after_subcategory_title', 'woovn_add_product_description', 12);
function woovn_add_product_description ($category) {
$cat_id = $category->term_id;
$prod_term = get_term($cat_id,'product_cat');
$description= $prod_term->description;
echo '

'.$description.'

';
?>
<button href="<?php echo get_the_permalink(); ?>" class="button mb-0">
                            <?php _e( 'Read more', 'woocommerce' ); ?>
                        </button>


<?php
}

4 thoughts on “Code cơ bản trong lập trình wordpress

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Nhắn tin Zalo 0918 99 2587