MỤC LỤC BÀI VIẾT
Một số đoạn code thường dùng trong lập trình wordpress
Bài viết này mình sẽ cung cấp các đoạn code nhỏ nhưng rất hữu ích trong wordpress, giúp bạn giải quyết được vấn đề một cách dễ dàng. Cùng theo dõi và tìm đoạn code mình đang cần nhé !
Code tự động lưu ảnh từ web khác về sever mình:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 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 'Liên hệ'; }
Code bỏ nút Thêm vào giỏ hàng:
1 2 | 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á <br /> 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // 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 thêm 1 Tab mới trong Woo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | 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>'; } ?> <style> div.woocommerce-variation-price, div.woocommerce-variation-availability, div.hidden-variable-price { height: 0px !important; overflow:hidden; position:relative; line-height: 0px !important; font-size: 0% !important; visibility: hidden !important; } </style> <script> jQuery(document).ready(function($) { // When variable price is selected by default setTimeout( function(){ if( 0 < $('input.variation_id').val() && null != $('input.variation_id').val() ){ if($('p.availability')) $('p.availability').remove(); $('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class="availability">'+$('div.woocommerce-variation-availability').html()+'</p>'); console.log($('div.woocommerce-variation-availability').html()); } }, 300 ); // On live variation selection $('select').blur( function(){ if( 0 < $('input.variation_id').val() && null != $('input.variation_id').val() ){ if($('.price p.availability') || $('.price p.stock') ) $('p.price p').each(function() { $(this).remove(); }); $('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class="availability">'+$('div.woocommerce-variation-availability').html()+'</p>'); console.log($('input.variation_id').val()); } else { $('p.price').html($('div.hidden-variable-price').html()); if($('p.availability')) $('p.availability').remove(); console.log('NULL'); } }); }); </script> <?php echo '<p class="price">'.$price.'</p> <div class="hidden-variable-price" >'.$price.'</div>'; } |