Thứ Hai, 4 tháng 9, 2017

Chào mừng các bạn đến với Blog thiết kế web Bình Dương

Thói quen gọi điện đặt hàng ở Việt Nam có thể làm bạn mất 1 lượng hoa hồng. Nếu bạn cần tham gia vào một cộng đồng có thể giúp bạn tiến bộ chóng mặt với kiếm tiền online, nơi có sẵn tài liệu hướng dẫn, công cụ thực hành, đội ngũ hỗ trợ bạn khi gặp khó khăn, cùng hàng ngàn thành viên khác để thảo luận.

Thế Khương MMO Team là 1 điểm đến. Nếu bạn cần tham gia vào một cộng đồng có thể giúp bạn tiến bộ chóng mặt với kiếm tiền online, nơi có sẵn tài liệu hướng dẫn, công cụ thực hành, có đội ngũ hỗ trợ bạn hàng ngày khi gặp khó khăn, cũng như có hàng ngàn thành viên khác để thảo luận. Workpress giờ tối ưu Seo hơn nhiều, giờ có nhiều plugin ứng dụng hay phết.

Chào mừng các bạn đến với Blog thiết kế web Bình Dương Hãy đăng ký kênh YOUTUBE để xem thêm những video đặc biệt chỉ dành riêng cho bạn. Theme bất động sản wordpress landing page.


Trong bài viết này sẽ giúp các bạn làm chủ và có thể học thêm kinh nghiệm về lập trình trong WordPress.
Cảm ơn các bạn đã quan tâm ghé thăm trang web, chúc các bạn vui và khám phá được nhiều điều mới! Mong các bạn ủng hộ bằng cách đánh giá bài viết, like và share bài viết để tôi có thêm cảm hứng chia sẻ nhiều hơn. Thích khám phá thế giới máy tính/internet và chia sẻ niềm đam mê đó với mọi người.

Đó là đam mê và sở thích của tôi. Hoặc chỉ đơn giản là những thứ mà tôi cần, có thể ai đó cũng cần. Bởi tôi muốn lưu trữ lại những thứ mà mình khám phá ra và chia sẻ nó với mọi người xung quanh.

Tại sao tôi lại làm blog này? Blog của tôi đã tồn tại trên internet được hơn 3 năm rồi. Cũng không phải là ít nữa.

Theo mặc định thì WordPress sẽ trả về 10 bài viết sau mỗi lần tìm kiếm, để thay đổi số lượng này, các bạn copy đoạn code sau vào file , như trong đoạn code này ,thì số lượng trả về sẽ là 20. Chắc hẳn là các bạn sẽ không muốn người dùng phải click chuột vào kết quả tìm kiếm mà chỉ có 1 kết quả trả về. Sử dụng đoạn code sau và dán nó vào file để nó chuyển ngay đến bài viết đó. Trong trường hợp các bạn không muốn trang (Pages) hoặc bài viết (Posts) nào xuất hiện trong danh sách tìm kiếm , các bạn chỉ cần việc copy đoạn code sau và dán nó vào file Trong đoạn code sau, nó sẽ loại bỏ tất cả các bài viết với categories có ids lần lượt là 0 và 1, các bạn chỉ cần việc thay đổi id của category nào mà các bạn muốn loại bỏ là được.

Vì vậy, để có một url dẫn đến hình ảnh đẹp và thân thiện, chúng ta cần phải sử dụng một số thủ thuật. Một url tốt sẽ là tuyệt vời cho SEO và công cụ tìm kiếm thân thiện, mặc định trong các hình ảnh url WordPress khi tải lên được làm sạch nhưng giữ lại các ký tự có dấu và dấu gạch ngang. Khi bạn mới bắt đầu học lập trình web, bạn sẽ tự tay xây dựng cho mình một trang web đầu tiên, đa phần mọi người đều bắt đầu với trang web tĩnh, chỉ có sử dụng HTML và xuất ra một vài dòng văn bản nào đó. Sau này, khi bạn làm quen nhiều hơn, khả năng code của bạn tăng cao, bạn lựa chọn ngôn ngữ lập trình theo sở thích của mình, và dĩ nhiên ở đây mình đang nói tới là lập trình web bằng PHP.

Nếu như vì một lý do nào đó mà các bạn không muốn chức năng tìm kiếm có thể hoạt động được ở trang web hay blog của mình, thì chỉ cần copy đoạn code sau vào file là được.

Các mạng network làm site Nichesite

Mình mong là với những đoạn code mà mình chia sẻ trong bài viết này sẽ giúp các bạn làm chủ và có thể học thêm kinh nghiệm về lập trình trong WordPress. Clickbank tương tự, nó sẽ không phải là bộ máy cho bạn kiếm tiền, mà Clickbank là 1 nền tảng hỗ trợ bạn kiếm tiền, là cầu nối giữa vendor, affiliate và khách hàng, bạn làm việc cho chính bản thân bạn, tìm kiếm khách hàng mua sản phẩm qua link bạn quảng bá chứ không phải làm thuê cho bất cứ ai.


Ngoài Amazon ra, bạn còn có thể chọn nhiều network khác để làm Nichesite, ví dụ niche về sản phẩm số có thể tìm đến Clickbank chẳng hạn. Magento đúng là lựa chọn số một trong lĩnh vực thương mại điện tử nhưng đừng quên rằng.. mổ con gì thì dùng dao đó, đừng dùng dao mổ trâu để giết gà. Để phát huy hết sức mạnh của Magento thì bạn phải là một doanh nghiệp siêu bự, còn không thì không cần thiết phải dùng Magento. Mình cũng đã từng làm website bán hàng bằng WP + WooCommerce và mình thấy cũng khá ổn, tất nhiên là về bán hàng thì magento vẫn là ngon rồi, nhưng hệ thống nó hơi phức tạp, tìm hiểu vận hàng cũng mất thời gian nữa chưa nó đến code.

Cũng như @saudom nói đấy, nếu code website bằng ngôn ngữ php, mà bạn đã cứng tay php thì hoàn toàn SEO ok. Bổ sung thêm cho một anh em vài thông tin nữa theo hiểu biết ít ỏi của mình thì code này chạy mượt thì sài. Vì sao gọi là Nichesite, vì bạn không thể nào quảng bá hết sản phẩm amazon trong 1 trang web, mà bạn phải chọn 1 lĩnh vực (vừa hoặc nhỏ), làm 1 website về chủ đề chủ đề này, và chọn những sản phẩm nổi bật trong lĩnh vực đó trên Amazon để quảng bá. Trước kia mình biết tới joomla cảm thất rất thik thú nhưng khi làm quen với Wp rồi bạn sẽ thấy tuyệt vời hơn ở chổ thân thiện dễ sài, và plugin cực kỳ phong phú hổ trợ rất tốt cho seo.

Magento là dành cho quy mô lớn, còn thông dụng và đơn giản thì nên dùng WP, thân thiện, dễ tuỳ chỉnh, seo cũng tốt! Bạn nên đọc thêm và cẩn thận với nó. Ở bài viết kiếm tiền với Clickbank có thật hay chỉ là lời đồn, mình đã nói khá kỹ về hình thức này, và cũng đưa ra 1 số lời khuyên, bởi vì hiện tại có rất nhiều khóa học tạp nham về Clickbank đưa ra nhiều lời cám dỗ mật ngọt.

Với hình thức này, mình tin 95% bạn sẽ thất bại hoặc không đủ kiên nhẫn để theo đuổi, nó cũng cần ngân sách cực lớn, tốt nhất là trên $500 để bắt đầu, và bạn cần 1 người chỉ đường để có hướng đi đúng đắn nhất, tiết kiệm thời gian nhất nếu không muốn mất 1 thời gian cực dài để tìm hiểu và thử nghiệm.

Thứ Ba, 1 tháng 8, 2017

Đổi tên hình ảnh khi upload trong wordpress

Một url tốt sẽ là tuyệt vời cho SEO và công cụ tìm kiếm thân thiện, mặc định trong các hình ảnh url WordPress khi tải lên được làm sạch nhưng giữ lại các ký tự có dấu và dấu gạch ngang. Vì vậy, để có một url dẫn đến hình ảnh đẹp và thân thiện, chúng ta cần phải sử dụng một số thủ thuật.

Ở đây tôi sẽ chia sẻ với bạn 2 cách để làm sạch tên url khi tải lên hình ảnh.

1. Sử dụng chức năng, mã tự viết

Bạn viết các chức năng này vào file.php tập tin, có thể tham khảo hai cách sau đây:
function wp_modify_uploaded_file_names($image_name){
    if(isset($_GET['post_id'])){
        $post_id = $_GET['post_id'];
    }
    elseif( isset($_POST['post_id'])){
        $post_id = $_POST['post_id'];
    }
    if(is_numeric($post_id)){
        $post_obj = get_post($post_id);
        $post_slug = $post_obj->post_name;
        if($post_slug){
            $random_number = rand(1,9999);
            $image_name['name'] = $post_slug . '-' . $random_number . '.jpg';
        }
    }
    return $image_name;
}

Tùy chọn 1: Chức năng đổi tên tiêu đề bài viết và thêm một số ngẫu nhiên từ 1 đến 9999
Ví dụ sau khi đổi tên: https://example.com/.../lam-sach-ten-anh-khi-upload-len-website-wordpress-2345.jpg

Phương pháp 2: Chức năng đặt lại tên chuỗi MD5 được mã hoá từ tên ban đầu của hình ảnh
Ví dụ sau khi đổi tên: https://example.com/.../6f4bcda5cedd1cadf497b5ef1efad203.jpg
function so_3261107_hash_filename($filename){
    $info = pathinfo($filename);
    $ext = empty($info['extension']) ? '' : '.' . $info['extension'];
    $name = basename($filename, $ext);
    return md5($name) . $ext;
}
add_filter('sanitize_file_name', 'so_3261107_hash_filename', 10);

2. Sử dụng plugin


Hiện tại có rất nhiều plugin có chức năng đổi tên hình ảnh, nhưng tôi muốn giới thiệu với bạn plugin Clean Image Filenames, nhận được nhiều đánh giá tốt của cộng đồng và cá nhân tôi thấy plugin này thực sự hữu ích để Tạo một url đẹp và thân thiện

Tên tệp hình ảnh trong trình cắm thêm sạch
Tên tệp hình ảnh trong trình cắm thêm sạch

Sau khi cài đặt, vào Settings> Media và cuộn xuống phần Clean Image Filenames, File Types bạn chọn Images chỉ để dọn dẹp URL hình ảnh, bạn cũng có thể chọn All types files để dọn sạch url cho tất cả Upload files lên trang web.

Cài đặt tên tập tin hình ảnh sạch
Cài đặt tên tập tin hình ảnh sạch

Sau đó nhấp vào Lưu thay đổi để lưu và trải nghiệm duy nhất, url sau khi đổi tên sẽ là biểu mẫu https://example.com/.../lam-sach-ten-anh-...-upload-len-website-wordpress . Jpg cho hình ảnh có tên "Tên sạch khi tải ảnh lên trang web WordPress"

Bài báo

Với 2 cách trên, tôi khuyên bạn nên sử dụng cách thứ hai, theo cách này đơn giản, plugin cũng rất nhẹ, tạo url tốt đẹp mà không mất nhiều hoạt động.

Bạn có thể tham khảo để làm, chúc bạn thành công!

Thứ Tư, 14 tháng 6, 2017

Code tạo breadcrumbs cho wordpress

Code tạo breadcrumbs wordpress không sử dụng plugin.
Mở file functions và dán đoạn code sau vào
<pre>
// Breadcrumbs
function custom_breadcrumbs() {
       
    // Settings
    $separator          = '&gt;';
    $breadcrums_id      = 'breadcrumbs';
    $breadcrums_class   = 'breadcrumbs';
    $home_title         = 'Homepage';
      
    // If you have any custom post types with custom taxonomies, put the taxonomy name below (e.g. product_cat)
    $custom_taxonomy    = 'product_cat';
       
    // Get the query & post information
    global $post,$wp_query;
       
    // Do not display on the homepage
    if ( !is_front_page() ) {
       
        // Build the breadcrums
        echo '<ul id="' . $breadcrums_id . '" class="' . $breadcrums_class . '">';
           
        // Home page
        echo '<li class="item-home"><a class="bread-link bread-home" href="' . get_home_url() . '" title="' . $home_title . '">' . $home_title . '</a></li>';
        echo '<li class="separator separator-home"> ' . $separator . ' </li>';
           
        if ( is_archive() && !is_tax() && !is_category() && !is_tag() ) {
              
            echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . post_type_archive_title($prefix, false) . '</strong></li>';
              
        } else if ( is_archive() && is_tax() && !is_category() && !is_tag() ) {
              
            // If post is a custom post type
            $post_type = get_post_type();
              
            // If it is a custom post type display name and link
            if($post_type != 'post') {
                  
                $post_type_object = get_post_type_object($post_type);
                $post_type_archive = get_post_type_archive_link($post_type);
              
                echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . $post_type_archive . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
                echo '<li class="separator"> ' . $separator . ' </li>';
              
            }
              
            $custom_tax_name = get_queried_object()->name;
            echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . $custom_tax_name . '</strong></li>';
              
        } else if ( is_single() ) {
              
            // If post is a custom post type
            $post_type = get_post_type();
              
            // If it is a custom post type display name and link
            if($post_type != 'post') {
                  
                $post_type_object = get_post_type_object($post_type);
                $post_type_archive = get_post_type_archive_link($post_type);
              
                echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . $post_type_archive . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
                echo '<li class="separator"> ' . $separator . ' </li>';
              
            }
              
            // Get post category info
            $category = get_the_category();
             
            if(!empty($category)) {
              
                // Get last category post is in
                $last_category = end(array_values($category));
                  
                // Get parent any categories and create array
                $get_cat_parents = rtrim(get_category_parents($last_category->term_id, true, ','),',');
                $cat_parents = explode(',',$get_cat_parents);
                  
                // Loop through parent categories and store in variable $cat_display
                $cat_display = '';
                foreach($cat_parents as $parents) {
                    $cat_display .= '<li class="item-cat">'.$parents.'</li>';
                    $cat_display .= '<li class="separator"> ' . $separator . ' </li>';
                }
             
            }
              
            // If it's a custom post type within a custom taxonomy
            $taxonomy_exists = taxonomy_exists($custom_taxonomy);
            if(empty($last_category) && !empty($custom_taxonomy) && $taxonomy_exists) {
                   
                $taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy );
                $cat_id         = $taxonomy_terms[0]->term_id;
                $cat_nicename   = $taxonomy_terms[0]->slug;
                $cat_link       = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy);
                $cat_name       = $taxonomy_terms[0]->name;
               
            }
              
            // Check if the post is in a category
            if(!empty($last_category)) {
                echo $cat_display;
                echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
                  
            // Else if post is in a custom taxonomy
            } else if(!empty($cat_id)) {
                  
                echo '<li class="item-cat item-cat-' . $cat_id . ' item-cat-' . $cat_nicename . '"><a class="bread-cat bread-cat-' . $cat_id . ' bread-cat-' . $cat_nicename . '" href="' . $cat_link . '" title="' . $cat_name . '">' . $cat_name . '</a></li>';
                echo '<li class="separator"> ' . $separator . ' </li>';
                echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
              
            } else {
                  
                echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
                  
            }
              
        } else if ( is_category() ) {
               
            // Category page
            echo '<li class="item-current item-cat"><strong class="bread-current bread-cat">' . single_cat_title('', false) . '</strong></li>';
               
        } else if ( is_page() ) {
               
            // Standard page
            if( $post->post_parent ){
                   
                // If child page, get parents
                $anc = get_post_ancestors( $post->ID );
                   
                // Get parents in the right order
                $anc = array_reverse($anc);
                   
                // Parent page loop
                if ( !isset( $parents ) ) $parents = null;
                foreach ( $anc as $ancestor ) {
                    $parents .= '<li class="item-parent item-parent-' . $ancestor . '"><a class="bread-parent bread-parent-' . $ancestor . '" href="' . get_permalink($ancestor) . '" title="' . get_the_title($ancestor) . '">' . get_the_title($ancestor) . '</a></li>';
                    $parents .= '<li class="separator separator-' . $ancestor . '"> ' . $separator . ' </li>';
                }
                   
                // Display parent pages
                echo $parents;
                   
                // Current page
                echo '<li class="item-current item-' . $post->ID . '"><strong title="' . get_the_title() . '"> ' . get_the_title() . '</strong></li>';
                   
            } else {
                   
                // Just display current page if not parents
                echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '"> ' . get_the_title() . '</strong></li>';
                   
            }
               
        } else if ( is_tag() ) {
               
            // Tag page
               
            // Get tag information
            $term_id        = get_query_var('tag_id');
            $taxonomy       = 'post_tag';
            $args           = 'include=' . $term_id;
            $terms          = get_terms( $taxonomy, $args );
            $get_term_id    = $terms[0]->term_id;
            $get_term_slug  = $terms[0]->slug;
            $get_term_name  = $terms[0]->name;
               
            // Display the tag name
            echo '<li class="item-current item-tag-' . $get_term_id . ' item-tag-' . $get_term_slug . '"><strong class="bread-current bread-tag-' . $get_term_id . ' bread-tag-' . $get_term_slug . '">' . $get_term_name . '</strong></li>';
           
        } elseif ( is_day() ) {
               
            // Day archive
               
            // Year link
            echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ' Archives</a></li>';
            echo '<li class="separator separator-' . get_the_time('Y') . '"> ' . $separator . ' </li>';
               
            // Month link
            echo '<li class="item-month item-month-' . get_the_time('m') . '"><a class="bread-month bread-month-' . get_the_time('m') . '" href="' . get_month_link( get_the_time('Y'), get_the_time('m') ) . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ' Archives</a></li>';
            echo '<li class="separator separator-' . get_the_time('m') . '"> ' . $separator . ' </li>';
               
            // Day display
            echo '<li class="item-current item-' . get_the_time('j') . '"><strong class="bread-current bread-' . get_the_time('j') . '"> ' . get_the_time('jS') . ' ' . get_the_time('M') . ' Archives</strong></li>';
               
        } else if ( is_month() ) {
               
            // Month Archive
               
            // Year link
            echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ' Archives</a></li>';
            echo '<li class="separator separator-' . get_the_time('Y') . '"> ' . $separator . ' </li>';
               
            // Month display
            echo '<li class="item-month item-month-' . get_the_time('m') . '"><strong class="bread-month bread-month-' . get_the_time('m') . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ' Archives</strong></li>';
               
        } else if ( is_year() ) {
               
            // Display year archive
            echo '<li class="item-current item-current-' . get_the_time('Y') . '"><strong class="bread-current bread-current-' . get_the_time('Y') . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ' Archives</strong></li>';
               
        } else if ( is_author() ) {
               
            // Auhor archive
               
            // Get the author information
            global $author;
            $userdata = get_userdata( $author );
               
            // Display author name
            echo '<li class="item-current item-current-' . $userdata->user_nicename . '"><strong class="bread-current bread-current-' . $userdata->user_nicename . '" title="' . $userdata->display_name . '">' . 'Author: ' . $userdata->display_name . '</strong></li>';
           
        } else if ( get_query_var('paged') ) {
               
            // Paginated archives
            echo '<li class="item-current item-current-' . get_query_var('paged') . '"><strong class="bread-current bread-current-' . get_query_var('paged') . '" title="Page ' . get_query_var('paged') . '">'.__('Page') . ' ' . get_query_var('paged') . '</strong></li>';
               
        } else if ( is_search() ) {
           
            // Search results page
            echo '<li class="item-current item-current-' . get_search_query() . '"><strong class="bread-current bread-current-' . get_search_query() . '" title="Search results for: ' . get_search_query() . '">Search results for: ' . get_search_query() . '</strong></li>';
           
        } elseif ( is_404() ) {
               
            // 404 page
            echo '<li>' . 'Error 404' . '</li>';
        }
       
        echo '</ul>';
           
    }
       
}
</pre>

Để hiển thị breadcrumbs ở vị trí mong muốn ta dùng shortcode sau để gọi ra:
<pre>
<?php custom_breadcrumbs(); ?>
</pre>

Thêm 1 chút style cho hoành tráng
<pre>
#breadcrumbs{
    list-style:none;
    margin:10px 0;
    overflow:hidden;
}
  
#breadcrumbs li{
    display:inline-block;
    vertical-align:middle;
    margin-right:15px;
}
  
#breadcrumbs .separator{
    font-size:18px;
    font-weight:100;
    color:#ccc;
}
</pre>