Lưu trữ tác giả: Nguyen Toan

Thêm tính năng cho Flatsome

Lưu bản nháp tự động
Nội dung

    Những addon của flatsome

    1. Editor Cleanup For Flatsome: FDP add-on to clean up the Flatsome UX Builder

    Editor Cleanup For Flatsome là một tiện ích bổ sung củaFreesoul Deactivate Pluginsđểdọn dẹp trình chỉnh sửa củaFlatsome (UX Builder).

    Nó sẽ không chỉ làm sạch các nội dung được thêm bởi các plugin khác, mã PHP của chúng cũng sẽ không chạy.

    Trình chỉnh sửa của Flatsome sẽ tải nhanh hơn và không có xung đột với các plugin khác.

    Cả hai plugin Freesoul Deactivate và Flatsome đều phải được cài đặt và hoạt động, trong trường hợp khác, plugin này sẽ không chạy.

    CÁCH DỌN DẸP TRÌNH CHỈNH SỬA FLATSOME

    • Cài đặt và kích hoạt Freesoul Deactivate Plugins nếu chưa hoạt động
    • Cài đặt và kích hoạt Flatsome nếu chưa hoạt động
    • Cài đặt và kích hoạt Trình dọn dẹp trình chỉnh sửa cho Flatsome
    • Vào Flatsome => Editor CLeanup
    • Nhấp vào “Dọn dẹp trình chỉnh sửa bên ngoài” để tắt các plugin mà trình chỉnh sửa bên ngoài không cần (thường là không cần plugin)
    • Nhấp vào “Dọn dẹp trình chỉnh sửa bên trong” để tắt các plugin mà trình chỉnh sửa bên trong không cần (trình chỉnh sửa bên trong giống như trang trên giao diện người dùng, nhưng được tải bên trong Trình tạo UX)
    • Nhấp vào “Dọn dẹp các hành động của trình chỉnh sửa” để tắt các plugin được gọi trong bất kỳ hành động nào được kích hoạt bởi UX Builder (cập nhật một phần tử, thêm một phần tử…) (thường không cần plugin, việc tắt plugin ở đây có thể giải quyết xung đột với các plugin khác)

    2. Flatsome Title With Category

    Plugin thêm thêm tiêu đề với phần tử danh mục sản phẩm cho chủ đề phẳng.

    3. Administrator Z

    Tính năng chức năng:

    1. Chức năng mặc định:
      • Thay đổi logo đăng nhập,
      • Tự động cập nhật wordpress, plugin, theme
      • Ẩn bảng điều khiển menu cho bất kỳ vai trò người dùng nào
      • Sử dụng trình chỉnh sửa cổ điển cho bài đăng
      • Hỗ trợ một số cấu hình PHP
      • Xác định hằng số của bạn
      • Hình thu nhỏ phân loại
    2. Yêu cầu:
      • Phông chữ bên ngoài và một số phông chữ được hỗ trợ
      • Các tệp JS bên ngoài và mã tùy chỉnh
      • Tệp CSS bên ngoài và mã tùy chỉnh
      • Tập lệnh mặc định và Thư viện JS được bao gồm và đăng ký bởi WordPress
    3. Nút nhóm liên hệ:
      • 4 phong cách
    4. Hỗ trợ Woocommerce
      • Tùy chỉnh nút thêm vào giỏ hàng
      • Thêm nút mua ngay bây giờ
      • Xóa trường quanity
      • trường thanh toán đơn giản: tên + điện thoại + địa chỉ
      • Liệt kê tất cả các móc tác vụ woocommerce cho các mã ngắn của bạn
      • Bộ lọc sản phẩm và biểu mẫu tìm kiếm
    5. Elementor
      • Hỗ trợ một số phần tử: Carouse, Đệ quy danh mục, Lưới bài đăng.
    6. Flatsome https://quyle91.github.io/administratorz/flatsome.html
      • Phần tử menu tiêu đề 3 tùy chỉnh mới
      • Hỗ trợ một số yếu tố:
        • Đếm ngược mới
        • Chế độ xem Đếm mới
        • Đã nhúng fanpage Facebook mới
        • Biểu tượng tùy chỉnh mới
        • Bản đồ mới với nhiều điểm đánh dấu
        • Bộ chọn điều hướng mới
        • Mới Đọc thêm Đọc ít hơn
        • Tìm kiếm biểu mẫu Woocommerce mới
        • Thanh trượt Flickity mới
        • Thanh trượt Fotorama mới
        • Số ngẫu nhiên mới.
        • Hộp đèn mới
        • Danh mục đầu tư mới và biểu mẫu tìm kiếm
      • 2 kiểu gói CSS
      • Trình biên tập MCE tí hon
      • Kiểu mới cho mục Danh sách: Danh sách Kiểu – Không có trong trình chỉnh sửa
      • Liệt kê tất cả các móc hành động Flatsome cho các mã ngắn của bạn
      • Dành cho AE Việt Nam: Có chức năng cho theme bất động sản (xem thêm trong document)
    7. Nhập dữ liệu
      • Đăng, sản phẩm woocommerce được hỗ trợ
      • Tự động lưu hình ảnh vào thư viện
      • loại bỏ thẻ html khác
      • Chỉ cần 1 cú nhấp chuột cho nhiều bài viết
    8. Người đưa thư
      • Cấu hình smtp của người gửi thư
    9. Công cụ khác
      • Thay thế hình ảnh: Giữ lại ID và url hình ảnh
    10. Sercurity
      • Tắt XML-RPC (bật tự động)
      • Tắt X-pingback (bật tự động)
      • Tắt API phần còn lại
      • Tắt chỉnh sửa tệp (bật tự động)

    4. Timeline Flatsome Addons

    5. EchBay For Flatsome

    Có thể tùy biến thêm một số vấn đề liên quan đến HTML một cách nhanh chóng, dễ dàng. Plugin cũng thêm 1 số widget để sử dụng thuận tiện hơn so với bản Flatsome mặc định.

    Hiển thị gallery của sản phẩm ra ngoài trang chủ

    Bước 1: Copy code vào functions.php

    function create_gallery_product_box_congdongblog()
    {
    global $product;
    $product_cat = get_the_terms($product->get_ID(), 'product_cat' );
    // var_dump($product_cat);
    if ( $product_cat && ! is_wp_error( $product_cat ) ) {
    echo '' . $product_cat[0]->name . '';
    }
    $attachment_ids = $product->get_gallery_image_ids();
    $count = count($attachment_ids);
    if ($attachment_ids) {
    $thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id($product->get_ID()));
    $size_full = wp_get_attachment_image_src(get_post_thumbnail_id($product->get_ID()), "full");
    echo '

    ‘;
    echo ‘

    ‘; $i = 0; foreach ($attachment_ids as $attachment_id) { if ($i < 3) { echo ‘

    ‘; echo ‘‘; echo ‘

    ‘; } if ($i == 3) { echo ‘Xem thêm + ‘ . ($count – $i) . ‘‘; } $i++; } echo ‘

    ‘;
    }
    }
    add_action(‘woocommerce_before_shop_loop_item_title’, ‘create_gallery_product_box_congdongblog’);

    add_action(‘wp_footer’,’add_script_footer_gallery’);

    function add_script_footer_gallery(){

    }
    Code trên sẽ hiển thị gallery ở dưới ảnh đại diện, nếu bạn muốn hiển thị ở chổ khác hay bất kỳ nơi nào, bạn có thể thay hook bạn muốn vào chổ woocommerce_before_shop_loop_item_title nhé! Code CSS hiển thị gallery < code>
    .isures-thumb–wrap {
    position: absolute;
    bottom: 0;
    display: flex;
    }
    .isures-thumb–items{
    max-width: calc(25% – 4px);
    width: 100%;
    margin-right: 5px;
    cursor: pointer;
    }
    .isures-thumb–items:nth-child(4){margin-right: 0}
    .isures-thumb–items.active{
    border: 1px solid var(–isures-primary-color)
    }
    .isures-thumb–items img {
    border: 1px solid transparent
    }
    .isures-more–btn {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 25%;
    height: 100%;
    background: rgba(0,0,0, .54);
    color: #fff!important;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    }
    .isures-more–btn span{font-size: 10px;text-align: center; font-weight: bold;}
    https://flatsomea-z.com/huong-dan-cach-hien-thi-gallery-cua-san-pham-ra-ngoai-trang-chu/

    Chèn ảnh thumbnail full-width ở trong post

    sử dụng hook flatsome_before_blog và gọi thumbnail của hình
    function add_thumnail_post_pttuan(){;?>
    <?php if (has_post_thumbnail() && is_single()){;?>
    <div class="thumbnail-pt">
        <?php the_post_thumbnail('full');?>
    </div>
    <?php };?>
    <style>
    .thumbnail-pt img{
    width:100%}
    </style>
    <?php }
    add_action('flatsome_before_blog','add_thumnail_post_pttuan');
    Tham khảo: pttuan410.com/lam-sao-de-chen-anh-full-width-o-dau-bai-post/

    Bật popup trong flatsome

    
    
    Giải thích thông số:
    • Auto_open: Tự động bật
    • auto_timer: Thời gian bao lâu để bật, đơn vị tính ms 3000ms = 3s
    • auto_show=once/always: Chỉ hiện 1 lần
    • width: chiều rộng của popup
    • padding: khoảng cách từ viền đến nội dung popup
    • block id=”popup” : tạo trong UX Blocks
    Cuối cùng, hãy vào Flatsome –> Advanced –> Global setting, chèn đoạn code trên vào Footer script rồi save lại là xong

    Chuyển widget về giao diện cũ ở WordPress 5.8

    Thêm đoạn code sau vào function.php
    add_filter( 'gutenberg_use_widgets_block_editor', '__return_false' );
    add_filter( 'use_widgets_block_editor', '__return_false' );

    Tạo gợn sóng phân cách bằng SVG

    Vào trang getwaves.io tạo gợn sóng như ý muốn và tải file về. Trước khi tải về nhớ chỉnh lại màu nền của đường gợn sóng lại.

    Có 2 section: 1 là Section bên trên có “margin = -15%” hoặc tùy ý bạn, mục đích để các layer trùng lên nhau. Section bên dưới bg_color="rgba(0, 0, 0, 0)" padding="-15%" và Banner chọn background là file svg vừa mới tải, bg_color="rgba(0, 0, 0, 0)"

    Thêm cột kích thước hình ảnh và sort được trong wordpress media

    Thêm cột kích thước file trong admin media nhằm cho biết dung lượng lớn không cần thiết lên website. Thay my-theme-text-domain bằng domain theme của bạn
    add_filter( 'manage_media_columns', 'codfe_media_columns_filesize' );
    /**
     * Filter the Media list table columns to add a File Size column.
     *
     * @param array $posts_columns Existing array of columns displayed in the Media list table.
     * @return array Amended array of columns to be displayed in the Media list table.
     */function codfe_media_columns_filesize( $posts_columns ) {
    $posts_columns['filesize'] = __( 'File Size', 'my-theme-text-domain' );
     
    return $posts_columns;
    }
     
    add_action( 'manage_media_custom_column', 'codfe_media_custom_column_filesize', 10, 2 );
    /**
     * Display File Size custom column in the Media list table.
     *
     * @param string $column_name Name of the custom column.
     * @param int    $post_id Current Attachment ID.
     */function codfe_media_custom_column_filesize( $column_name, $post_id ) {
    if ( 'filesize' !== $column_name ) {
    return;
    }
     
    $bytes = filesize( get_attached_file( $post_id ) );
     
    echo size_format( $bytes, 2 );
    }
     
    add_action( 'admin_print_styles-upload.php', 'codfe_filesize_column_filesize' );
    /**
     * Adjust File Size column on Media Library page in WP admin
     */function codfe_filesize_column_filesize() {
    echo
    '<style>
    .fixed .column-filesize {
    width: 10%;
    }
    </style>';
    }
     
    // Make column sortable
    function codfe_add_column_sortable_file_size($columns) {
      $columns['filesize'] = 'filesize';
      return $columns;
    }
    add_filter('manage_upload_sortable_columns', 'codfe_add_column_sortable_file_size');
     
     
    // Column sorting logic (query modification)
    function codfe_sortable_file_size_sorting_logic($query) {
      global $pagenow;
      if(is_admin() && 'upload.php' == $pagenow && $query->is_main_query() && !empty($_REQUEST['orderby']) && 'filesize' == $_REQUEST['orderby']) {
        $query->set('order', 'ASC');
        $query->set('orderby', 'meta_value_num');
        $query->set('meta_key', 'filesize');
        if('desc' == $_REQUEST['order']) {
          $query->set('order', 'DSC');
        }
      }
    }
    add_action('pre_get_posts', 'codfe_sortable_file_size_sorting_logic');

    Thêm bài viết liên quan theo danh mục cho blog

    Thêm tính năng cho Flatsome chèn đoạn code sau vào file functions.php của Child Theme
    /* Dev by Woovn */ add_shortcode('woovn_posts_related','flatsome_related_posts');
    function flatsome_related_posts(){
    ob_start();
    $categories = get_the_category(get_the_ID());
    if ($categories){
    echo '<div class="relatedcat">';
    $category_ids = array();
    foreach($categories as $individual_category) array_push($category_ids, $individual_category->term_id);
    $my_query = new wp_query(array(
    'category__in' => $category_ids,
    'post__not_in' => array(get_the_ID()),
    'posts_per_page' => 6
    ));
    $ids = wp_list_pluck( $my_query->posts, 'ID' );
    $ids = implode(',', $ids);
    if( $my_query->have_posts() ){
    echo '<h3>Bài viết liên quan</h3>';
    //echo do_shortcode('
      
        
    '); // Slider echo do_shortcode('
    '); // Row } echo '</div>'; } return ob_get_clean(); }
    Sau đó chúng ta chỉ việc chèn shortcode sau vào HTML after blog posts trong Tùy biến ▸ Blog ▸ Blog Single Post
    <!-- Chèn vào HTML after blog posts -->
    [woovn_posts_related]

    Bài viết liên quan theo tag

    Dán code này vào file functions.php của theme/child theme đang kích hoạt
    /*
     * Code bài viết liên quan theo tag
    */function bvlq() {
        global $post;
        $tags = wp_get_post_tags($post->ID);
        if ($tags){
            $output = '<div class="relatedcat">';
            $first_tag = $tags[0]->term_id;
            
            $args=array(
                'tag__in' => array($first_tag),
                'post__not_in' => array($post->ID),
                'posts_per_page'=>3,
                'caller_get_posts'=>1
            );
            $my_query = new wp_query($args);
            
            if( $my_query->have_posts() ):
                $output .= '<p>Bài viết liên quan:</p><ul class="row related-post">';
                while ($my_query->have_posts()):$my_query->the_post();
                $output .= 
                    '<li class="col large-4">
                                    <a href="'.get_the_permalink().'" title="'.get_the_title().'">
                                        <div class="feature">
                                            <div class="image" style="background-image:url('. get_the_post_thumbnail_url() .');"></div>
                                        </div>                            
                                    </a>
                                    <div class="related-title"><a href="'.get_the_permalink().'" title="'.get_the_title().'">'.get_the_title().'</a></div>
                                </li>';
                endwhile;
                $output .= '</ul>';
            endif; wp_reset_query();
            $output .= '</div>';
            return $output;
        }
        else return;
    }
    add_shortcode('bvlq', 'bvlq');

    Bài viết liên quan cùng Chuyên mục

    /*
     * Code bài viết liên quan theo chuyên mục
    */function bvlq_danh_muc() {
        $output = '';
        if (is_single()) {
          global $post;
          $categories = get_the_category($post->ID);
          if ($categories) {
            $category_ids = array();
            foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
            $args=array(
              'category__in' => $category_ids,
              'post__not_in' => array($post->ID),
              'posts_per_page'=>3,
              'caller_get_posts'=>1
            );
            
            $my_query = new wp_query( $args );
            if( $my_query->have_posts() ):
                $output .= '<div class="relatedcat">';
                    $output .= '<p>Bài viết liên quan:</p><div class="row related-post">';
                        while ($my_query->have_posts()):$my_query->the_post();
                        $output .= 
                            '<div class="col large-4">
                                <a href="'.get_the_permalink().'" title="'.get_the_title().'">
                                    <div class="feature">
                                        <div class="image" style="background-image:url('. get_the_post_thumbnail_url() .');"></div>
                                    </div>                            
                                </a>
                                <div class="related-title"><a href="'.get_the_permalink().'" title="'.get_the_title().'">'.get_the_title().'</a></div>
                            </div>';
                        endwhile;
                    $output .= '</div>';
                $output .= '</div>';
            endif;   //End if.
          wp_reset_query();
        }
        return $output;
      }
    }
    add_shortcode('bvlq_danh_muc','bvlq_danh_muc');
    chèn vào style.css của theme/child theme đang kích hoạt hoặc thêm vào CSS bổ sung trong Tuỳ biến của Flatsome
    .feature {
        position: relative;
        overflow: hidden;
    }
    .feature::before {
    content: "";
    display: block;
    padding-top: 56.25%;
    }
    .feature .image{
        position: absolute;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        margin: auto;
        background-size: cover;
        background-position: center;
    }
    ul.row.related-post li {
        list-style: none;
    }
    .related-title {
        line-height: 1.3 !important;
        margin-top: 10px !important;
    }
    Sau khi thêm đủ 2 cái đó cho con, chúng ta được 2 shortcode [“bvlq”] và [“bvlq_danh_muc”] (bỏ dấu ” ” khi copy nhé). Chúng ta chọn 1 loại rồi thêm vào Flatsome –> Theme Option –> Blog –> Blog Single Post, chúng ta kéo xuống dưới cùng, tới phần HTML after blog posts. Chúng ta chèn shortcode.

    Thu gọn nội dung chi tiết sản phẩm

    /*
    * Thêm nút Xem thêm vào phần mô tả của bài viết sản phẩm
    */add_action('wp_footer','hal_readmore_flatsome');
    function hal_readmore_flatsome(){
        ?>
        <style>
            .single-product div#tab-description {
                overflow: hidden;
                position: relative;
            }
            .single-product .tab-panels div#tab-description.panel:not(.active) {
                height: 0 !important;
            }
            .hal_readmore_flatsome {
                text-align: center;
                cursor: pointer;
                position: absolute;
                z-index: 9999;
                bottom: 0;
                width: 100%;
                background: #fff;
            }
            .hal_readmore_flatsome:before {
                height: 55px;
                margin-top: -45px;
                content: "";
                background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%);
                background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%);
                background: linear-gradient(to bottom, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%);
                filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff00', endColorstr='#ffffff',GradientType=0 );
                display: block;
            }
            .hal_readmore_flatsome a {
                color: #318A00;
                display: block;
            }
            .hal_readmore_flatsome a:after {
                content: '';
                width: 0;
                right: 0;
                border-top: 6px solid #318A00;
                border-left: 6px solid transparent;
                border-right: 6px solid transparent;
                display: inline-block;
                vertical-align: middle;
                margin: -2px 0 0 5px;
            }
        </style>
        <script>
            (function($){
                $(document).ready(function(){
                    $(window).on('load', function(){
                        if($('.single-product div#tab-description').length > 0){
                            var wrap = $('.single-product div#tab-description');
                            var current_height = wrap.height();
                            var your_height = 300;
                            if(current_height > your_height){
                                wrap.css('height', your_height+'px');
                                wrap.append(function(){
                                    return '<div class="hal_readmore_flatsome"><a title="Xem thêm" href="javascript:void(0);">Xem thêm</a></div>';
                                });
                                $('body').on('click','.hal_readmore_flatsome', function(){
                                    wrap.removeAttr('style');
                                    $('body .hal_readmore_flatsome').remove();
                                });
                            }
                        }
                    });
                });
            })(jQuery);
        </script>
        <?php
    }
    Lưu ý giá trị là 300. Đó chính là chiều dài của khung nội dung. Nếu muốn khung nội dung dài hay ngắn thì hãy chỉnh sửa thông số đó cho phù hợp.

    Thu gọn nội dung chi tiết danh mục sản phẩm

    /*
     * Thêm nút Xem thêm vào phần mô tả của danh mục sản phẩm
     * Author: anhlinhmkt - https://anhlinhmkt.com
    */add_action('wp_footer','hal_readmore_taxonomy_flatsome');
    function hal_readmore_taxonomy_flatsome(){
        if(is_woocommerce() && is_tax('product_cat')):
            ?>
            <style>
                .tax-product_cat.woocommerce .shop-container .term-description {
                    overflow: hidden;
                    position: relative;
                    margin-bottom: 20px;t
                    padding-bottom: 25px;
                }
                .hal_readmore_taxonomy_flatsome {
                    text-align: center;
                    cursor: pointer;
                    position: absolute;
                    z-index: 10;
                    bottom: 0;
                    width: 100%;
                    background: #fff;
                }
                .hal_readmore_taxonomy_flatsome:before {
                    height: 55px;
                    margin-top: -45px;
                    content: "";
                    background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%);
                    background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%);
                    background: linear-gradient(to bottom, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%);
                    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff00', endColorstr='#ffffff',GradientType=0 );
                    display: block;
                }
                .hal_readmore_taxonomy_flatsome a {
                    color: #318A00;
                    display: block;
                }
                .hal_readmore_taxonomy_flatsome a:after {
                    content: '';
                    width: 0;
                    right: 0;
                    border-top: 6px solid #318A00;
                    border-left: 6px solid transparent;
                    border-right: 6px solid transparent;
                    display: inline-block;
                    vertical-align: middle;
                    margin: -2px 0 0 5px;
                }
                .hal_readmore_taxonomy_flatsome_less:before {
                    display: none;
                }
                .hal_readmore_taxonomy_flatsome_less a:after {
                    border-top: 0;
                    border-left: 6px solid transparent;
                    border-right: 6px solid transparent;
                    border-bottom: 6px solid #318A00;
                }
            </style>
            <script>
                (function($){
                    $(document).ready(function(){
                        $(window).on('load', function(){
                            if($('.tax-product_cat.woocommerce .shop-container .term-description').length > 0){
                                var wrap = $('.tax-product_cat.woocommerce .shop-container .term-description');
                                var current_height = wrap.height();
                                var your_height = 300;
                                if(current_height > your_height){
                                    wrap.css('height', your_height+'px');
                                    wrap.append(function(){
                                        return '<div class="hal_readmore_taxonomy_flatsome hal_readmore_taxonomy_flatsome_show"><a title="Xem thêm" href="javascript:void(0);">Xem thêm</a></div>';
                                    });
                                    wrap.append(function(){
                                        return '<div class="hal_readmore_taxonomy_flatsome hal_readmore_taxonomy_flatsome_less" style="display: none"><a title="Thu gọn" href="javascript:void(0);">Thu gọn</a></div>';
                                    });
                                    $('body').on('click','.hal_readmore_taxonomy_flatsome_show', function(){
                                        wrap.removeAttr('style');
                                        $('body .hal_readmore_taxonomy_flatsome_show').hide();
                                        $('body .hal_readmore_taxonomy_flatsome_less').show();
                                    });
                                    $('body').on('click','.hal_readmore_taxonomy_flatsome_less', function(){
                                        wrap.css('height', your_height+'px');
                                        $('body .hal_readmore_taxonomy_flatsome_show').show();
                                        $('body .hal_readmore_taxonomy_flatsome_less').hide();
                                    });
                                }
                            }
                        });
                    });
                })(jQuery);
            </script>
        <?php
        endif;
    }
    Tương tự như vậy giá trị là 300, đây là chiều cao của khung mô tả

    Đưa mô tả danh mục sản phẩm xuống dưới

    //* Đưa mô tả danh mục xuống dưới.
    remove_action('woocommerce_archive_description','woocommerce_taxonomy_archive_description', 10 );
    add_action( 'woocommerce_after_shop_loop', 'woocommerce_taxonomy_archive_description', 100 );

    Tạo ảnh WebP

    Đuôi ảnh .webp tối ưu, nhẹ. Sử dụng thử plugin WebP Converter for Media – Convert WebP & Optimize Images được cái:
    • Miễn phí
    • Hiển thị ảnh bằng chế độ “via .htaccess” (bạn xem ảnh vẫn thấy đuôi .jpg nhưng bấm save thì ra .webp). Có nghĩa ảnh được load là webp nhưng url cũ vẫn được giữ nguyên.
    • Nhiều tùy chọn, dư xài (chất lượng ảnh, auto convert, cache, redirect, regenerate…)
    Trình duyệt web nào chưa hỗ trợ WebP thì ảnh gốc (jpg, png) sẽ được hiển thị vì file .webp được tạo và đặt ở 1 folder riêng, không ảnh hưởng đến file media gốc của bạn.
    Lúc nào chán không muốn dùng nữa thì xóa plugin, xóa folder file webp đi là xong. Nhưng mà nên xài đi, mai mốt còn lên chuẩn AVIF nữa chứ
    https://wordpress.org/plugins/webp-converter-for-media/

    Tự động thêm tên file ảnh vào thuộc tính

    Thêm tính năng cho Flatsome Các thuộc tính của ảnh: tiêu đề ảnh, mô tả ảnh trong SEO rất là quan trọng. Một đoạn function để giúp các bạn có thể điền 1 cách tự động các thuộc tính này khi thêm 1 ảnh mới, thông tin thêm mới sẽ dựa trên tên file ảnh mà bạn đặt nhé.

    function abl_mc_auto_image_attributes( $post_ID ) {
      $attachment = get_post( $post_ID );
       
      $attachment_title = $attachment->post_title;
      $attachment_title = str_replace( '-', ' ', $attachment_title ); // Hyphen Removal
      $attachment_title = ucwords( $attachment_title ); // Capitalize First Word
       
      $uploaded_image = array();
      $uploaded_image['ID'] = $post_ID;
      $uploaded_image['post_title'] = $attachment_title; // Tiêu đề ảnh
      $uploaded_image['post_excerpt'] = $attachment_title; // Chi tiết ảnh
      $uploaded_image['post_content'] = $attachment_title; // Mô tả ảnh
       
      wp_update_post( $uploaded_image );
      update_post_meta( $post_ID, '_wp_attachment_image_alt', $attachment_title ); // Image Alt Text
    }
    add_action( 'add_attachment', 'abl_mc_auto_image_attributes' );

    khi các bạn thêm ảnh mới thì nó sẽ tự động cập nhật tiêu đề, chi tiết và mô tả ảnh.

    Chèn bài viết liên quan vào giữa bài viết

    Đầu tiên chúng ta sẽ viết 1 function để có thể hiển thị được các bài viết cùng category với bài viết hiện tại nhé, để có thể viết được function này. Các bạn tìm hiểu giúp mình về WP query. Đầu tiên sẽ tạo 1 shortcode có tên gọi là [post_pttuan]

    function recent_post_by_pttuan(){
        ob_start();
        $cats = wp_get_post_categories( get_the_ID(), array( 'fields' => 'ids' ) );
            $the_query = new WP_Query( array(
                'post_type' => 'post',
                'posts_per_page' => '5',
                'post__not_in' => array(get_the_ID()),
                'tax_query' => array(
                    array (
                        'taxonomy' => 'category',
                        'field' => 'term_id',
                        'terms' => $cats,
                    )
                ),
            ) );
            if($the_query->have_posts()){
                echo '<div class="pttuan_post_recent_main">';
                echo '<h3 class="pttuan_post_recent_main_title text-center">Bài viết liên quan</h3>';
                echo '<div class="pttuan_post_recent_container">';
                while ( $the_query->have_posts() ):$the_query->the_post();?>
                <div class="pttuan_post_recent_item">
                    <a href="<?php echo get_the_permalink();?>">
                    <div class="pttuan_post_recent_thumbnail">
                        <?php echo get_the_post_thumbnail();?>
                    </div>
                    <div class="pttuan_post_recent_title">
                        <?php echo get_the_title();?>
                    </div>
                    </a>
                </div>
                <?php endwhile;
                echo '</div></div>';
            };
            wp_reset_postdata();
        $list_post = ob_get_contents();
        ob_end_clean();
        return $list_post;
    }
    add_shortcode('post_pttuan','recent_post_by_pttuan');

    Bạn có thể dán shortcode vào bất kì đâu để nó hiển thị các bài viết liên quan đến bài viết hiện tại, nếu bài viết nhiều category thì nó sẽ lấy nhiều category. Các bạn chú ý đến cái dòng ‘posts_per_page’ => ‘5’, Các bạn muốn hiển thị mấy bài viết thì sửa số 5 thành bất kì nhé. Hiển thị bài viết liên quan vào giữa bài post 1 cách tự động Để chèn ký tự hoặc 1 đoạn văn vào giữa bài post 1 cách tự động thì các bạn sẽ phải can thiệp vào filter của wordpress. Để chèn được vào giữa bài viết, cụ thể là mình sẽ chèn vào đoạn thứ 2 của bái viết (Enter 1 lần sẽ là 1 đoạn).

    add_filter('the_content', 'contentafter2para');
    function contentafter2para($content){
        if(is_single()){
            $pttuan_content = do_shortcode('[post_pttuan]');
            $after = 2;
            $end = '</p>';
            $content_pttuan = explode($end, $content);
            foreach($content_pttuan as $key => $cont){
                if(trim($cont)) {
                    $content_pttuan[$key] .= $end;
                }
                if(($key + 1) == $after){  
                    $content_pttuan[$key] .= $pttuan_content;
                }
            }
            $content = implode('', $content_pttuan);
        }
        return $content;    
    }

    Bạn chú ý đến đoạn $after = 2; giúp mình, nếu bạn mún nó hiển thị ở đoạn thứ 3 thì sửa thành 3 nhé. Thêm 1 chút CSS cho nó

    function css_custom(){;?>
    <style type="text/css">
        .pttuan_post_recent_main_title{
            color: #fff;
            font-weight: bolder;
            margin-bottom: 15px;
        }
        .pttuan_post_recent_main{
            background: #1d65d8;
            padding: 10px 5px;
            margin-bottom: 15px;
            border-radius: 5px;
        }
        .pttuan_post_recent_container{
            display: flex;
            justify-content: space-between;
        }
        .pttuan_post_recent_container>*{
            width: 19%;
            background: #fff;
            border-radius: 3px;
        }
        .pttuan_post_recent_thumbnail{
            height: 80px;
            overflow: hidden;
            margin-bottom: 10px;
        }
        .pttuan_post_recent_title{
            font-size: 14px;
            line-height: 1.25;
            padding: 0 5px;
        }
        @media only screen and (max-width: 48em) {
            .pttuan_post_recent_container>*{
                width: 30%;
                margin-right: 10px;
            }
            .pttuan_post_recent_container>*:last-child{
                margin-right: unset;
            }
            .pttuan_post_recent_container{
                overflow-x: scroll;
                flex-flow: unset;
                display: -webkit-box;
            }
            .pttuan_post_recent_thumbnail{
                height: 50px;
                margin-bottom: 5px;
            }
            .pttuan_post_recent_title{
                font-size: 11px;
            }
        }
    </style>
    <?php }
    add_action('wp_footer','css_custom');

    Cuộn trang Landing Page với “Scroll To”

    Trong bài viết này, để các bạn dễ hình dung, mình sẽ lấy ví dụ khi chúng ta click vào button “Nhận Báo Giá“, trang Landing Page sẽ cuộn xuống mục “BáoGiá“. Đầu tiên các bạn mở trình chỉnh sửa UX-Builder lên -> “Addelements” -> Chọn “ScrollTo” -> Tại đây các bạn nhập thông tin:

    • Tiêu đề/Title: Title này sẽ hiển thị tại bullet/chấm tròn bên phải màn hình Desktop khi người dùng rê chuột đến.
    • Link: các bạn set link bắt đầu với#link.
    • Bullet: On hoặc Off để tùy chọn hiển thị chấm tròn bên phải màn hình Desktop.

    Sau đó, các bạn click và kéo mục “ScrollTo” đến section mà bạn cần cuộn trang đến. Và chọnbuttoncần chèn link, kéo xuống mục liên kết, paste link#linkmà bạn đã đặt vào.(Như ví dụ ở hình dưới, mình đã set link cho “Scroll To” là #baogia). Thêm tính năng cho Flatsome Để chèn link cuộn trang lên thanh menu, các bạn truy cập vào trang quản trị, các bạn chọn “Giaodiện” -> “Menu” -> Chọn “Menu” cần sửa -> Chọn “Liênkếttựtạo” -> Nhập link & Tiêu đề Menu -> “ThêmvàoMenu” -> kéo menu đến vị trí bạn cần đặt & “LưuMenu” để cập nhật. Thêm tính năng cho Flatsome Ẩn thông báo trong trang quản trị

    // yellow pencil, flatsome activation nag remover
    function admin_css() {
     echo '<style type="text/css">
    #update-nag, .update-nag, .wrap .yellowpencil-notice, #flatsome-notice {display: none !important;}
     </style>';
    }
    add_action('admin_head', 'admin_css');    

    Thêm Nút Huỷ Đơn Hàng Cho Khách Sau Khi Thanh Toán

    Thêm nút “Huỷ đơn hàng” trong trang tài khoản của khách hàng với 1 đoạn code vô cùng đơn giản. //Cho phép KH huỷ đơn hàng sau khi thanh toán
    add_filter( 'woocommerce_valid_order_statuses_for_cancel', 'custom_valid_order_statuses_for_cancel', 10, 2 );
    function custom_valid_order_statuses_for_cancel( $statuses, $order ){
    // Cài đặt các trạng thái mà bạn cho phép khách hàng huỷ $custom_statuses = array( ‘completed’, ‘pending’, ‘processing’, ‘on-hold’, ‘failed’ ); // Cài đặt số ngày được phép huỷ kể từ khi đặt đơn $duration = 3; // 3 days // Lấy ID đơn đặt hàng và WC_Order if( isset($_GET[‘order_id’])) $order = wc_get_order( absint( $_GET[‘order_id’] ) ); $delay = $duration*24*60*60; // (duration in seconds) $date_created_time = strtotime($order->get_date_created()); // Creation date time stamp $date_modified_time = strtotime($order->get_date_modified()); // Modified date time stamp $now = strtotime(“now”); // Now time stamp // Using Creation date time stamp if ( ( $date_created_time + $delay ) >= $now ) return $custom_statuses; else return $statuses; }

    Thêm ảnh sản phẩm ở trang thanh toán

    đơn hàng của trang thanh toán mặc định của woocommerce hiển thị tên sản phẩm, số lượng và tổng tiền nhưng không hiển thị hình ảnh đại diện của sản phẩm. Nếu bạn muốn hiển thị thêm hình ảnh nổi bật của sản phẩm giúp khách hàng kiểm tra lại trước khi đặt hàng. add_filter( 'woocommerce_cart_item_name', 'flatsomeaz_product_image_review_order_checkout', 9999, 3 ); function flatsomeaz_product_image_review_order_checkout( $name, $cart_item, $cart_item_key ) { if ( ! is_checkout() ) return $name; $product = $cart_item[‘data’]; $thumbnail = $product->get_image( array( ’50’, ’50’ ), array( ‘class’ => ‘alignleft’ ) ); return $thumbnail . $name; }

    Xoá hình ảnh thừa trên website không cần dùng plugin


    add_filter('intermediate_image_sizes', function ($sizes) {
    return array_diff($sizes, ['medium_large']); // Medium Large (768 x 0)
    });
    //
    add_action('init', 'remove_extra_image_sizes');
    function remove_extra_image_sizes()
    {
    $sizes = array();
    foreach (get_intermediate_image_sizes() as $size) {
    if (!in_array($size, $sizes)) {
    remove_image_size($size);
    }
    }
    }

    flatsome addon

    Link: https://wordpress.org/plugins/administrator-z https://wordpress.org/plugins/wp-extra/

    Hiển thị thêm mô tả sản phẩm khi hover sản phẩm ngoài trang chủ

    Thêm tính năng cho Flatsome Thêm đoạn này vào function
    function add_mota(){
    global $post;
    echo '

    ‘; echo ‘‘; echo ‘

    ‘.get_the_title().’

    ‘; echo get_the_excerpt(); echo ‘‘; echo ‘

    ';
    }
    add_action('flatsome_product_box_tools_top','add_mota');
    Tiếp theo thêm css
    .image-tools.top.right{
    right:unset;
    left:0;
    padding: 0;
    }
    .exc-custom{
    background: rgba(0, 0, 0, 0.6) none repeat scroll 0 0;
    padding:10px;
    }
    .exc-custom *{
    color:#fff!important;
    }
    .title-custom {
    font-size: 15px;
    font-weight: bold;
    }

    HƯỚNG DẪN CHẶN XUẤT / NHẬP DỮ LIỆU WEBSITE WORDPRESS

    Trong một số trường hợp. Người thiết kế Website hoặc chủ Website muốn chống bị xuất dữ liệu website khi bàn giao cho ‘Tuesday‘ như Ads Agency, SEO Agency, Content Agency … thì function đơn giản dưới đây sẽ giúp Quý anh chị và các bạn làm điều đó.

    Tuy nhiên function này nên sử dụng kết hợp với chống sửa theme thì sẽ mang lại hiệu quả tốt nhất nhé.
    Bước 1:
    Copy và Paste function này vào tệp function.php của Theme đang hoạt động và lưu lại:
    add_action('admin_menu', function() { remove_submenu_page( 'tools.php', 'export.php' );remove_submenu_page( 'tools.php', 'import.php' ); });
    Bước 2:
    Reload lại trang chúng ta sẽ thấy mục Nhập vào / Xuất ra (Export / Import) sẽ không còn nữa. Như thế là đã thành công.
    Bước 3: NÂNG CAO
    Trong trường hợp gặp người dùng có quyền chỉnh sửa Theme. Người ta có thể can thiệp vào file function.php thì chức năng này là vô ích. Vì thế ta cần truy cập vào Hosting / VPS của mình. Sau đó copy dòng dưới đây và dán vào vị trí: ../public_html/wp-config.php
    define( 'DISALLOW_FILE_EDIT', true );

     

    Nguồn: https://pttuan410.com/huong-dan-cach-chen-bai-viet-lien-quan-vao-giua-bai-viet/ https://pttuan410.com/huong-dan-tang-diem-google-speed-insight-voi-plugin-litespeed/ https://pttuan410.com/huong-dan-tao-popup-co-the-bat-tat-cho-website-cua-ban-ma-khong-can-dung-plugin/ https://pttuan410.com/mot-so-hook-co-ban-cua-theme-flatsome-p-2/ https://pttuan410.com/mot-so-hook-co-ban-cua-theme-flatsome-p-1/

    Clone website về máy cục bộ bằng TTrack

    Clone website về máy cục bộ bằng TTrack
    Nội dung

      Đây là công cụ được đánh giá là tốt nhất hiện nay. Trước đây mình có sử dụng nhiều công cụ để rip giao diện web nhưng đều không ăn thua, các tài nguyên như ảnh, js,css không được tải về hay mã html còn thiếu.

      Vấn đề đầu tiên mình gặp phải với HTTrack là phần mềm này có quá nhiều tính năng, thật choáng ngợp , những gì mình trình bày trong bài viết này là kỹ năng và công thức mình đã thực hành thành công.

      Có 2 phiên bản sử dụng, phiên bản giao diện và sử dụng lệnh command line. Mình khuyến khích sử dụng lệnh vì nó chính xác hơn.

      vào cmd trỏ vào thư mục cài đặt “c:\Program Files\WinHTTrack” gõ thử: httrack để test. Nếu sử dụng lâu dài thì có thể thêm vào “system environment variables windows, để sử dụng thư viện command line ở mọi folder không cần phải trỏ vào thư mục gốc của nó.

      Nhập vào lệnh sau:

      httrack "http://demo.hoangweb.com/thevistaanphu" -O "/tmp/thevistaanphu" "+*.hoangweb.com/*" -v
      

      Câu lệnh trên sẽ tải toàn bộ nội dung website có địa chỉ là “http://demo.hoangweb.com/thevistaanphu” và lưu vào thư mục c:/tmp/thevistaanphu. Giới hạn chỉ download page và tài nguyên đến từ domain hoangweb.com

      Tham số-Onghĩa là “output to” (lưu vào đâu đó),-v: verbose (hiển thị toàn bộ tiến trình tải dữ liệu (gồm thành công và lỗi nếu gặp phải) ra cửa sổ lệnh).

      Đây là lệnh phổ biến nhất mà tôi hay sử dụng. Chú ý: kiên trì đợi vài phút để quá trình tải dữ liệu của website hoàn tất.

      Clone website về máy cục bộ bằng TTrack

       

      Cấu trúc dữ liệu tải về

      Các file tải về được lưu có cấu trúc theo địa URL. Ví dụ: ở ví dụ trên httrack tải địa chỉ http://demo.hoangweb.com/thevistaanphu, đây là website sử dụng mã nguồn wordpress, vào website này chúng ta thấy có ảnh logo, và các ảnh được lấy ra ở trong theme.

      http://demo.hoangweb.com/thevistaanphu/wp-content/photography_uploads/1-logo1[1].jpg
      http://demo.hoangweb.com/thevistaanphu/wp-content/themes/elegant-photography/images/progress.gif
      ...
      

      Như vậy ảnh 1-logo1[1].jpg này sẽ được lưu tại folder:
      c:/tmp/thevistaanphu/demo.hoangweb.com/thevistaanphu/wp-content/photography_uploads/
      Ảnh progress.gif nằm ở folder:
      c:/tmp/thevistaanphu/demo.hoangweb.com/thevistaanphu/wp-content/themes/elegant-photography/images/

      .Nếu có external link ngoài domain hoangweb.com thì tài nguyên đến từ domain đó vẫn được lấy dữ liệu.

      Sử dụng trợ giúp về lệnh, nếu bạn không chắc chắn về cách sử dụng lệnh đó, hãy gõ:httrack --helpđể tra.

      Cú pháp

      httrack www.all.net/bob/
      

      lệnh này khá đơn giản , các options được sử dụng mặc định. Gõ:httrack --helpbạn sẽ thấy giá trị mặc định của các tham số như sau:

      w *mirror web sites
       %f *use proxy for ftp (f0 don't use)
        cN number of multiple connections (*c8)
        RN number of retries, in case of timeout or non-fatal errors (*R1)
       %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use)
        NN  name conversion type (0 *original structure, 1+: see below)
        LN  long names (L1 *long names / L0 8-3 conversion)
        KN   keep original links (e.g. http://www.adr/link) (K0 *relative link)
        o *generate output html file in case of error (404..) (o0 don't generate)
        X *purge old files after update (X0 keep delete)
        bN  accept cookies in cookies.txt (0=do not accept,* 1=accept)
        u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always)
        j *parse Java Classes (j0 don't parse)
        sN  follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
        C  create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before)
        f *log file mode
        I *make an index (I0 don't make)
        pN priority mode: (* p3)  *3 save all files
        D  *can only go down into subdirs
        a  *stay on the same address
        --mirror       *make a mirror of site(s) (default)
      

      Giải thích:

      Lọc các link tải về
      Cho phép chỉ tải các link có chứa domain, subdomain hoặc URL chứa một chuỗi nào đó có hỗ trợ widcat.

      httrack www.hoangweb.com/lien-he/ "+*.hoangweb.com/*" -v
      

      Print Debug
      Để hiển thị thông tin tiến trình tải dữ liệu sử dụng thêm tham số-v(verbose).

      httrack www.hoangweb.com/lien-he/ -v
      

      Tham số -B
      Cho phép tải URL ở sub-level. Ví dụ:

      httrack www.all.net/bob/ -B
      

      Trương trình không chỉ tải những URL con có chứa đường dẫnwww.all.net/bob/mà sẽ tải cả URL như: www.all.net/joe/, www.all.net/bob/deeper/

      w *mirror web sites
      tải dữ liệu của URL hiện tại và tự động quét các link có trong nội dung của URL đó và tiếp tục download dữ liệu của các link đó.

      %f *use proxy for ftp (f0 don’t use)
      nếu có link ftp (ie: ftp://) thì sử dụng ftp proxy server để tải về.

      cN number of multiple connections (*c8)
      cho phép 8 URL được download cùng một lúc. Ví dụ sau cho phép hoạt động 4 URLs cùng một lúc, thay vì mặc định là 8.

      httrack www.all.net/bob/ -c4 -B
      

      RN number of retries, in case of timeout or non-fatal errors (*R1)
      Cố gắng download URL một lần nữa nếu URL đó bị lỗi.

      %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don’t use)
      quyét toàn bộ URLs thậm trí tìm thấy cả trong javascript,java và mọi nơi còn lại mà phần mềm có thể tìm thấy.

      NN name conversion type (0 *original structure, 1+: see below)
      Lưu lại đúng cấu trúc thư mục và tên file được sử dụng trong trang web. Như đã giải thích ở trên ví dụ ta có ảnhloading.gifsử dụng trên website có địa chỉ:

      http://localhost/hoangweb/wp-content/themes/abc/images/loading.gif
      

      ảnh này sẽ được lưu về có cấu trúc folder theo cấu trúc URL đến ảnh đó là: hoangweb/wp-content/themes/abc/images/loading.gif
      Tham số mặc định của httrack làN0, bạn có thể viết thêm tham số này tuy nhiên nếu sử dụng giá trị mặc định thì không cần chỉ định.

      httrack http://localhost/hoangweb/wp-content/themes/abc/images/loading.gif -N0 -g -O /tmp/images
      

      Tuy nhiên, tất cả files tài nguyên bạn muốn tải về chung một thư mục thì chỉ số 0 bằng 1

      httrack http://localhost/hoangweb/wp-content/themes/abc/images/loading.gif -N1 -g -O /tmp/proj1
      

      Lệnh trên sẽ tải file loading.gif vào thư mục “/tmp/proj1/web/images”. Nếu bạn cung cấp địa chỉ website hoặc URL tới một file mà nội dung có chứa các liên kết của những files tài nguyên khác. Tất cả những files tìm thấy sẽ đều lưu vào thư mục này. Bạn sẽ dễ quản lý hơn, trong những trường hợp rip giao diện của website. Đây cũng là cách để bạn lấy tất cả các file tài nguyên có trong file css.

      LN long names (L1 *long names / L0 8-3 conversion)
      mặc định lưu file với tên sử dụng trên website.

      K keep original links (e.g. http://www.adr/link) (K0 *relative link)
      ví dụ tải về nội dung web có địa chỉ: http://demo.hoangweb.com/thevistaanphu/gioi-thieu/ thì file html của nó nằm tại: /thevistaanphu/gioi-thieu/index.html

      o *generate output html file in case of error (404..) (o0 don’t generate)
      nếu có xẩy ra lỗi trong khi tải URL, trương trình sẽ tạo một file thay thế với nội dung thông báo URL đó đã bị lỗi (404 not found).

      bN accept cookies in cookies.txt (0=do not accept,* 1=accept)
      cho phép tất cả các cookies hoạt động nếu được yêu cầu, một số site cần duy trì cookie để sử dụng cho nhiều trang nó sẽ hoạt động như trên trình duyệt bình thường nên bạn không phải lo lắng.

      u check document type if unknown (cgi,asp..) (u0 don’t check, * u1 check but /, u2 check always)
      Phân tích những kiểu file không phải là html,image type như asp, php,…những file này có thể được tải về.

      j *parse Java Classes (j0 don’t parse)
      Cho phép phân tích và tìm URL ở java class file.

      sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
      có sử dụng robots.txt để chặn những URL không được phép truy cập.

      C create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before)
      nếu bạn đang tải một website mà đã tải trước đó rồi, thì những URL cũ sẽ bị bỏ qua và chỉ tải những URL mới “If-Modified-Since“.

      f *log file mode
      lưu tại vào file log những hoạt động quan trọng diễn ra trong quá trình download.

      I *make an index (I0 don’t make)
      tạo file index.html là file chính của URL từ file này có liên kết tới các URL khác đã được download.

      pN priority mode: (* p3) *3 save all files
      lưu lại tất cả các file đã được tải về.

      a *stay on the same address
      Mỗi một domain được lưu vào một thư mục có cùng tầng, theo cấu trúc URL. Ví dụ trên: http://demo.hoangweb.com/thevistaanphu có liên kết tới domain www.pinterest.com như vậy chúng ta có 2 thư mục.
      chứa tại c:\tmp\thevistaanphu\demo.hoangweb.com và c:\tmp\thevistaanphu\www.pinterest.com

      –mirror *make a mirror of site(s) (default)
      cố gắng download hết tài nguyên có thể theo như cấu hình đã lập.

      Chi tiết câu lệnh

      General Options

      Chỉ định lưu dữ liệu tải về

      Sử dụng tham số -O theo sau là đường dẫn thư mục bạn muốn lưu.

      httrack http://www.shoesizes.com -O /tmp/shoesizes
      

      Action Options

      Tham số:

      • -w *không đưa ra câu hỏi nhưng có xác nhận để cho phép trương trình tiến hành tải dữ liệu của website (mirror web sites).
      • -W trong quá trình tải dữ liệu có đưa ra lựa chọn để mirror web sites.
      • -g just get files (saved in the current directory)
      • -i tiếp tục chạy nếu gặp lỗi interrupted do lỗi không gian đĩa hoặc bị mất mạng (vì sử dụng cache)
      • -Y mirror ALL links located in the first level pages (mirror links)

      Ví dụ Tham số -W

      httrack http://www.shoesizes.com -O /tmp/shoesizes -W 
      

       

      Clone website về máy cục bộ bằng TTrack

      Ví dụ Tham số -w

      httrack http://www.shoesizes.com -O /tmp/shoesizes -w
      

       

      Clone website về máy cục bộ bằng TTrack

      Tham số -g

      cho phép tải file một cách chính xác có trên địa chỉ URL. Ví dụ sau đây trương trình sẽ hiểu là tải file binary “windrv32.exe” không phải tải file windrv32.html.

      httrack -g www.mydrivers.com/drivers/windrv32.exe
      

      Nếu URL không chỉ định kiểu tệp thì mặc định sử dụng định dạng .html
      Do vấn đề bảo mật, web server không cho phép bất kỳ một trương trình nào có thể tải các file sử lý trên server như .asp, .php, .cgi một cách bất hợp pháp.

      Tham số -i

      tiếp tục thực hiện lại tiến trình tải URL nếu gặp lỗi như do ổ đĩa không còn dung lượng trống hay đột ngột bị mất mạng, bạn nên sử dụng tham số này sẽ rất có ích.

      httrack http://www.shoesizes.com -O /tmp/shoesizes -i
      

      Tải tất cả các links chỉ ở level đầu tiên của page URL.

      Chỉ tải tất cả các links ở level đầu tiên của URL. Nó rất hữu ích nếu page URL có nhiều external Link mà bạn muốn lấy dữ liệu của chúng.

      httrack http://www.shoesizes.com/othersites.html -O /tmp/shoesizes -Y 
      

       

      Clone website về máy cục bộ bằng TTrack

      Proxy Options

      Một số tính năng trên web sử dụng proxy, khi bạn vào website thấy xuất hiện hộp thoại đăng nhập đó là yêu cầu tài khoản proxy.

      Clone website về máy cục bộ bằng TTrack

      Tham số proxy có dạng:

      -P proxy:port or -P user:[email protected]:port
      Clone website về máy cục bộ bằng TTrack
      

       

      Proxy anonymizing access

      Sử dụng mặc định proxy không yêu cầu user ID và password, thực hiện câu lệnh như ví dụ dưới đây:

      httrack http://www.shoesizes.com -O /tmp/shoesizes -P proxy.www.all.net:8080
      

      Trường hợp trên, mình giả sử có dịch vụ proxyproxy.www.all.net, sử dụng port 8080

      authorized access proxy

      Một số trường hợp proxy có yêu cầu user ID và password để hợp pháp truy cập vào tài nguyên web.

      httrack http://www.shoesizes.com -O /tmp/shoesizes -P fc:[email protected]:8080
      

      Ở đây, userID=’fc’ và password=’password’

      Ví dụ download tài nguyên từ FTP server
      FTP là một ví dụ về proxy server, với ftp server thêm vào tham số-%f0. Ví dụ:

      httrack ftp://ftp.shoesizes.com -O /tmp/shoesizes -%f0
      

      HTTrack không phải là công cụ chuyên dụng để tải ftp files. Tuy nhiên có thể sử dụng httrack có thể tải một file hoặc các tệp trong một folder trên FTP. Ví dụ:
      ftp://ftp.somesite.com/pub/files/file010.ziphoặcftp://ftp.somesite.com/pub/files/.

      Limits Options

      Giới hạn chiều sâu tìm kiếm URL

      Để tránh tải toàn bộ các page của web một cách lãng phí và mất nhiều thời gian chờ đợi, đôi khi bạn đang chỉ cần copy giao diện của 1 page thôi. Điều này rất hữu ích bằng việc sử dụng tham số-rtheo sau là mức độ level. Ví dụ sau, sẽ giới hạn độ sâu link tới 5 level.

      #5 level
      httrack http://www.shoesizes.com -O /tmp/shoesizes -r5
      ...
      

      Giới hạn số lượng mức

      Trên thực tế một website không đến độ sâu 20 level tức link chứa trong link tới 20 lần, giả sử có website như vậy các bạn hãy thử nghĩ nếu có 2 subdirectory trong mỗi directory mà lệnh cho phép tìm tới 50 level như vậy sẽ là 10 tỷ directories ->con số này viễn tưởng gây ra lặp vô hạn (infinite loop) cho httrack. Cách tốt nhất là giới hạn số lượng directories sử dụng tham số-m. Ví dụ giới hạn tổng tối đa 50000000 directories được tải về.

      httrack http://www.shoesizes.com -O /tmp/shoesizes -m50000000
      

      Giới hạn dung lượng file .html được tải về

      httrack http://www.shoesizes.com -O /tmp/shoesizes -m50000000,100000
      

      Ví dụ trên thiết lập giới hạn kích thước cho .html file là 100,000 bytes. Thêm đối số thứ 2 vào tham số-mbởi dấu phẩy. Tuy nhiên HTML file hiếm khi có dung lượng lớn hơn thế, tuy nhiên trong một vài trường hợp chúng ta sẽ cần dùng.

      Giới hạn tổng dung lượng tải về

      Nếu ban quan tâm tới dung lượng tải về thì sử dụng tham số-Mcó thể giới hạn được dung lượng cần tải về tránh phung phí dung lượng ổ đĩa.

      httrack http://www.shoesizes.com -O /tmp/shoesizes -M1000000000
      

      Ví dụ trên, giới hạn tới 1 gigabyte

      Giới hạn độ sâu external link

      Ví dụ sau đây sẽ chỉ tìm tới 5 level cho externel link.

      httrack http://www.shoesizes.com -O /tmp/shoesizes %e5
      

      Các lệnh khác xem chi tiết tại: https://www.httrack.com/html/fcguide.html

      Mình vừa liệt kê một số tính năng hay dùng, Ngoài ra còn rất nhiều tham số khác mình chưa có dịp nêu ra ở đây. Nhưng đối với những ai dùng vào việc sao chép giao diện web hay tải web về ổ đĩa để đọc offline thì những lệnh trên đủ để bạn xài rồi.

      Lọc định dạng file muốn tải về

      Bạn có thể chỉ định một số kiểu file cho phép tải về thay vì download rất nhiều file mà không sử dụng đến, bằng cách sử dụng ký tự wildcards.

      Quét file trên URL

      Ví dụ, tôi sẽ tải tất cả các file từ .zip hoặc .gif
      bạn khai báo định dạng file với dấu + là cho phép và dấu – là bỏ qua:-*.gifhoặc cho phép file swf <code+*.swf.
      Ví dụ đầy đủ:

      $ httrack http://www.hillstate.com.vn/customer/vip.asp -O /tmp/save -B -N1 -r1 +*.gif
      

      Scan rule dựa vào kích thước

      Cũng dựa vào kiểu lọc wildcard này mà có thể chỉ quét các file theo mẫu URL. Ví dụ bạn sẽ muốn tất cả các file trên đường link domain www.example.com, sử dụng pattern: ‘+www.example.com/*‘. Thêm vào đó lấy các file gif nhưng giới hạn kích thước file từ 5->100 kb. Nghĩa là sẽ bỏ qua file dưới 5KB và trên 100KB.

      +www.example.com +*.gif -*.gif*[<5] -*.gif*[>100]
      

      Quét MIME Type File

      Xác định nội dung của đường link. Bạn không biết chính xác URL trả về nội dung gì, có thể là html và có thể là data content. vd: www.example.com/dynamic.php trường hợp link này tạo image, pdf…
      Sử dụng nguyên-*.gifsẽ không loại bỏ được trong URL tạo dữ liệu file động, bạn cần tham sốmime
      Ví dụ:-mime:image/gif,
      +mime:image/gif'
      -mime:*/* +mime:text/html +mime:image/gif

      Xem thêm các mẫu patterns quét file tại địa chỉ:https://www.httrack.com/html/filters.html.

      Tối ưu hóa hình ảnh cho tìm kiếm – SEO hình ảnh

      Lưu bản nháp tự động
      Nội dung

        Sự thật là có rất nhiều thứ liên quan đến SEO hình ảnh hơn là thẻ alt và tên file. Trên thực tế, những tiến bộ gần đây của Google trong học máy – mà chúng tôi có thể phần nào đánh giá được hiệu quả của sản phẩm API tầm nhìn đám mây của họ thực sự cho thấy họ đã có thể xác định nội dung của hình ảnh mà không cần dựa vào thẻ alt. Vì vậy, bạn thậm chí nên tập trung vào điều gì khi nói đến hình ảnh trên trang web của bạn? Bạn thậm chí vẫn có thể tối ưu hóa hình ảnh cho tìm kiếm?
        Bởi vì không ai muốn đọc một bài báo dài mà không có một hình ảnh nào. Không có hình ảnh, nội dung ở mức trung bình và nhàm chán. Cũng giống như thiết kế trang web nói chung, việc sử dụng biểu đồ, đồ họa và các công cụ hỗ trợ trực quan cho nội dung khác trong nội dung của bạn sẽ giúp nó nổi bật. Chúng đóng một vai trò rất lớn trong việc làm cho nội dung chuyển đổi, có thể chia sẻ và liên kết được. Vì vậy, cách đơn giản nhất để nói – nếu bạn có khả năng (thời gian / nguồn lực) để làm như vậy, hãy thêm hình ảnh vào tất cả nội dung của bạn ở những nơi phù hợp để giúp nó nổi bật. Hãy nghĩ về những gì bạn mong đợi sẽ thấy khi xem một bài báo về chủ đề bạn đang viết.

        Đặt tên cho tất cả các tệp hình ảnh một cách thích hợp

        Lời khuyên của Google về tên tệp hình ảnh vẫn nhất quán – họ nói rằng tên tệp có thể cung cấp cho Google manh mối về chủ đề của hình ảnh. Đặc biệt lưu ý rằng một tiêu đề như my-new-black-kitten.jpg tốt hơn đáng kể so với IMG00023.jpg.

        Lưu bản nháp tự động

        Do đó, chúng tôi khuyên bạn nên tránh nhập hoặc sao chép & dán hình ảnh từ các tài liệu word (vì điều này dẫn đến tiêu đề như word-image-1.jpg), điều này rõ ràng là không mong muốn theo lời khuyên của Google.

        Lưu ý:Dù bạn làm gì, đừng nhồi nhét tên tệp hình ảnh với từ khóa, tức là hình ảnh trên có thể có tiêu đề là chocolate-chip-cookie.jpg. Nhưng đặt tiêu đề cho nó là chocolate-chip-cookie-cookies-baking.jpg chỉ vì lợi ích của việc có thêm các từ khóa trong đó là một phương pháp không tốt và chúng tôi sẽ thận trọng khi không thử điều này.

        2Sử dụng Phụ đề & Văn bản Thay thế Hình ảnh Mô tả

        Thẻ thay thế và Văn bản thay thế là gì?

        Văn bản thay thế (còn được gọi là thẻ alt) là viết tắt của văn bản thay thế được sử dụng để mô tả hình ảnh trên trang web. Mặc dù có thể nhìn thấy khi xem nguồn HTML của một trang, nókhôngnhằm mục đích hiển thị trên chính trang nơi hình ảnh được hiển thị. Nó phục vụ nhiều mục đích, bao gồm và chủ yếu để giúp các công cụ đọc màn hình mô tả hình ảnh cho người đọc khiếm thị của bạn. Và, tất nhiên, các công cụ tìm kiếm cũng sử dụng nó để thu thập thông tin và hiểu các trang web tốt hơn.

        Nguyên tắc chính thức của Google bao gồm một ví dụ về cú pháp HTML cho văn bản thay thế – được hiển thị bên dưới:

        <img src = ”cún con.jpg” alt = ”Chú chó đốm đang chơi gắp” />

        Họ cũng tuyên bố rằng trênthực tế,Googlesử dụngvăn bản thay thế với các thuật toán thị giác máy tính và nội dung của trang để hiểu chủ đề của hình ảnh. Ngoài ra, lời khuyên của họ khi chọn văn bản thay thế nào để sử dụng cho bất kỳ hình ảnh nào trên trang web của bạn là luôn tạo nội dung hữu ích, giàu thông tin, sử dụng từ khóa theo cách phù hợp trong ngữ cảnh của trang web mà họ đang truy cập. Tóm lại, một lần nữa tuân thủ các nguyên tắc tương tự như sau đối với tên tệp hình ảnh – tránh lạm dụng lạm dụng các từ khóa có thể khiến nội dung trang web của bạn bị coi là spam.

        May mắn thay, Rank Math thực sự làm cho nó có thể tự động hóa quá trình thay thế văn bản. Các thuộc tính alt bị thiếu có thể tự động được thêm bằng cách sử dụng các biến khác nhau như tên tệp của chúng (như đã đề cập trước đó nên được đặt theo cách thủ công thành một thứ gì đó phù hợp), v.v.

        Lưu bản nháp tự động

        Và, Rank Math thay đổi giá trị văn bản thay thế hình ảnh trên giao diện người dùng của trang web của bạn (tức là không thay đổi giá trị được lưu trữ) để nếu sau này bạn muốn thay đổi văn bản thay thế một lần nữa và đặt một cái gì đó theo cách thủ công – điều này có thể được thực hiện.

        Tương tự đối với chú thích hình ảnh:

        Lưu bản nháp tự động

        Lưu ý quan trọng:Các chú thích được thêm vào hình ảnh cũng được thêm động. Điều đó có nghĩa là Rank Math thêm chú thích vào hình ảnh trong khi tải trang, chứ không phải trước đó. Nói cách khác, nếu bạn kiểm tra hình ảnh của mình từ thư viện phương tiện WordPress, bạn sẽ không tìm thấy chú thích được thêm vào đó, nhưng bạn sẽ tìm thấy chúng trên các bài đăng, trang, v.v.

        Lưu bản nháp tự động

        Chỉ cần chọn định dạng phụ đề của bạn và để Rank Math thực hiện công việc nặng nhọc…

        Cách tối ưu hóa hình ảnh Văn bản thay thế (Thẻ thay thế) để SEO hình ảnh tốt hơn

        Thật dễ dàng bị treo và lãng phí rất nhiều thời gian để cân nhắc về văn bản thay thếhoàn hảocho mỗi hình ảnh trên trang web của bạn. Trong thực tế, văn bản thay thế chỉ cần:

        • Có liên quan, chính xác và viết cho khả năng tiếp cận của người dùng (và SEO)
        • Mang tính mô tả và cụ thể
        • Có liên quan

        Để tăng tốc quá trình này, bất cứ khi nào viết văn bản thay thế, chỉ cần nhìn vào một hình ảnh và mô tả những gì trong hình ảnh (tức làĐây là một hình ảnh / bức ảnh của…). Điều này sẽ tự động khuyến khích bạn viết thứ gì đó có liên quan và không đặc biệt theo hướng từ khóa trong khi khi có thể, các từ khóa phù hợp sẽ tự nhiên vẫn tạo thành một phần của văn bản thay thế cho tất cả các hình ảnh của bạn. Ngoại lệ đáng chú ý duy nhất đối với điều này là dành cho chụp ảnh sản phẩm và hình ảnh. Mặc dù không nhất thiết phải là thứ mà bạn thường sử dụng khi mô tả những gì trong hình ảnh – bao gồm cả số sê-ri sản phẩm / số nhận dạng duy nhất (nếu đó là thứ mà mọi người sẽ tìm kiếm để tìm sản phẩm) là hữu ích. Mặc dù điều này không dựa trên nguyên tắc công khai của Google – để củng cố mối quan hệ rõ ràng giữa các trang sản phẩm của bạn với hình ảnh và các tìm kiếm mà mọi người đang thực hiện dựa trên các tìm kiếm có liên quan cho một truy vấn:

        Lưu bản nháp tự động

        Vì vậy, hãy xem qua một số ví dụ về văn bản thay thế mà chúng tôi sẽ sử dụng cho một vài hình ảnh:

        Thêm chú thích vào hình ảnh trên trang web của bạn

        Mặc dù không hoàn toàn cần thiết khi nó không thêm vào hình ảnh hoặc hình ảnh của bạn chỉ nhằm mục đích trang trí – thêm chú thích trỏ đến nguồn gốc của hình ảnh (nếu đó không phải là của bạn), hoàn toàn là để ghi công hoặc để chỉ ra một cái gì đó cụ thể trong hình ảnh của bạn là hữu ích cho tìm kiếm và người đọc của bạn.

        Google đã chính thức tuyên bố rằng họ sử dụng chú thích cùng với tiêu đề hình ảnh, vì vậy nếu có thể, hãy đảm bảo rằng hình ảnh được đặt gần văn bản có liên quan và trên các trang có liên quan đến chủ đề được khuyến khích.Tuy nhiên, như một ví dụ, bạn sẽ nhận thấy rằng chúng tôi không sử dụng chú thích hình ảnh trong hầu hết nội dung của mình vì văn bản xung quanh mỗi hình ảnh chúng tôi chèn đã liên quan nhiều đến hình ảnh và tại sao nó lại có trong bài viết ngay từ đầu.

        3Giảm kích thước tệp hình ảnh của bạn để có thời gian tải nhanh hơn

        Google đã ghi lại kỹ lưỡng cách họ khuyên chủ sở hữu trang web tối ưu hóa hình ảnh của họ để họ có thể tiếp tục sử dụng mà không ảnh hưởng đến thời gian tải trang của họ.Điểm chính là việc tối ưu hóa, ngay cả khi phải hy sinh chất lượng, thường rất đáng giá vì tác động của nó đối với thời gian tải là rất đáng kể.

        Lưu bản nháp tự động

        Có một số công cụ mã nguồn mở / miễn phí để trợ giúp việc này, bao gồm:

        Khi nói đến phần mềm bạn cài đặt và chạy cục bộ trên máy tính của mình, lựa chọn của chúng tôi sẽ luôn là ImageOptim (mặc dù nó chỉ dành cho Mac, vì vậy nếu bạn là người dùng Linux hoặc Windows, đây là một sốlựa chọn thay thế). Nó cực kỳ đơn giản, bạn kéo và thả vào một hình ảnh và thế là xong.

        ImageOptim sẽ xử lý phần còn lại và tối ưu hóa tệp ở vị trí ban đầu.

        Lưu bản nháp tự động

        Nó cũng hỗ trợ tối ưu hóa hình ảnh GIF và có một khu vực cài đặt nơi bạn có thể tùy chỉnh mức độ cụ thể mà bạn muốn nén hình ảnh và ở mức độ nào.

        Một trong những cài đặt như vậy mà chúng tôi khuyên bạn nên thay đổi là cài đặt được bật theo mặc định sẽ loại bỏ dữ liệu EXIF ​​khỏi hình ảnh của bạn – vìGoogle đã tuyên bố rằng họ có thể sử dụng dữ liệu EXIF ​​làm yếu tố xếp hạng cho Google Hình ảnh.

        Lưu bản nháp tự động

        Nói như vậy nhưng về lâu dài việc làm thủ công này khá tốn thời gian. Ngay cả khi nó chỉ là một vài giây cho mỗi hình ảnh, trong một năm – bạn sẽ dành hàng giờ để tổ chức cục bộ hình ảnh và kéo chúng vào các công cụ này.

        Nói một cách đơn giản, khi bạn đã sẵn sàng tự động hóa toàn bộ quy trình – nếu bạn đã sử dụng hệ thống quản lý nội dung hàng đầu (WordPress) – thì có một số giải pháp thực sự chắc chắn.Đáng chú ý nhất làWP Smush,ShortPixel&Imagify.

        Các plugin này cũng giúp đảm bảo rằng trang web của bạn đang cung cấp hình ảnh được chia tỷ lệ (phản hồi), nghĩa là nếu bạn tải lên một hình ảnh có chiều rộng 1080px và ai đó xem nó trên thiết bị di động có chiều rộng rõ ràng là nhỏ hơn 1080px, thì nó sẽ không tải hình ảnh 1080px đầy đủ (đó là những gì sẽ xảy ra nếu không và lãng phí băng thông).Theo cách thủ công, điều này có thể đạt được bằng cách sử dụngsrcset

        Tạo Sơ đồ trang web Hình ảnh và Lập chỉ mục Hình ảnh của Bạn nhanh hơn

        Sơ đồ trang web giúp các công cụ tìm kiếm thu thập thông tin nội dung dễ dàng hơn.

        Vì vậy, như bạn có thể đã đoán – mộtsơ đồ trang web hình ảnhcho bạn cơ hội cung cấp cho Google thông tin bổ sung về hình ảnh cùng với URL hình ảnh cho những hình ảnh mà họ có thể không khám phá được.

        Đây là những thẻ mà bạn có thể sử dụng trong sơ đồ trang web hình ảnh:

        NhãnYêu cầuSự miêu tả
        <hình ảnh: hình ảnh>đúngEcnsloses tất cả thông tin về một trang duy nhất. Mỗithẻ <url>có thể chứa tối đa 1.000thẻ <image: image>.
        <hình ảnh: loc>đúngURL của hình ảnh. Trong một số trường hợp, URL hình ảnh có thể không nằm trên cùng một miền với trang web chính của bạn. Điều này hoàn toàn ổn miễn là cả hai miền đều được xác minh trong Google Search Console. Ví dụ: nếu bạn sử dụng mạng phân phối nội dung như Google Sites để lưu trữ hình ảnh của mình, hãy đảm bảo rằng trang web lưu trữ được xác minh trong GSC. Ngoài ra, hãy đảm bảo rằng tệp robots.txt của bạn không cho phép thu thập dữ liệu bất kỳ nội dung nào bạn muốn lập chỉ mục.
        <hình ảnh: caption>Không bắt buộcChú thích cho hình ảnh.
        <hình ảnh: geo_location>Không bắt buộcVị trí địa lý của hình ảnh. Ví dụ:<image: geo_location> Limerick, Ireland </ image: geo_location>
        <image: title>Không bắt buộcTiêu đề của hình ảnh.
        <hình ảnh: giấy phép>OptinalMột URL đến giấy phép của hình ảnh. Thay vào đó, bạn có thể sử dụng siêu dữ liệu hình ảnh, nếu muốn.

        Nếu bạn sử dụng WordPress với SEO Rank Math – hình ảnh sẽ được tự động thêm vào sơ đồ trang web của bạn, theocấu hình sơ đồ trang webcủa bạn .

        Để đủ điều kiện cho những điều này, chỉ cần:

        Mặc dù đây thực sự là bước khởi đầu và tất nhiên, chúng tôi không thể tính đến những hình ảnh nào bạn đang thực sự sử dụng trên trang web của mình – mặc dù chúng tôi có hai đề xuất rất đơn giản về mặt đó:

        1. Tránh những bức ảnh có chất lượng thấp bằng mọi giá.
        2. Đảm bảo rằng mọi hình ảnh đơn lẻ trên trang web của bạn thực sự đóng góp vào trải nghiệm của một con người đến trang web của bạn (tức là họ đã xem trang web của bạn ở đâu và họ đang cố lấy gì từ trang họ đang truy cập).

        Dịch vụ SMS GATEWAY

        Sms Gateway
        Nội dung

          Đây là giải pháp giúp bạn gửi thông báo bằng tin nhắn SMS cho khách hàng hoặc người quản lý mỗi khi có đơn hàng mới hoặc thay đổi trạng thái đơn hàng không chỉ gửi tin khi khách hàng gửi tin trên web.

          Điểm đặc biệt ở đây là hệ thống tận dụng sim và điện thoại của bạn để tạo thành một tổng đài gửi SMS chuyên nghiệp. Do đó bạn không phải thuê dịch vụ gửi SMS và cũng bỏ qua sự phiền hà khi phải đăng kí mẫu tin trước khi gửi. Thêm nữa, tốc độ gửi tin nhắn gần như tức thì giúp bạn không bỏ lỡ bất kì khách hàng nào.

          Đăng ký tư vấn
          All SMS Gateway – Send Bulk SMS through HTTP-SMPP Protocol & Android Phone by Turning into Gateway
          Sms Gateway

          Trải nghiệm SMS Gateway

          Vui lòng điền đẩy đủ thông tin vào form bên cạnh để bắt đầu. Một email chứa link tải và thông tin plugin sẽ được gửi tới bạn sau 1-3 phút. Đồng thời bạn cũng sẽ nhận được 1 tài khoản đăng nhập quản lý SMS để kết nối app trên điện thoại.

          Hãy trải nghiệm và để lại suy nghĩ hoặc góp ý của bạn tại đây nhé!

          Lỗi: Không tìm thấy biểu mẫu liên hệ.

          Các bước thực thi

          • SIM điện thoại còn hoạt động bình thường, có thể gửi tin nhắn đi được và phải còn tiền trong tài khoản.
          • Điện thoại chạy hệ điều hành Android (iPhone không được). Phải luôn có kết nối mạng 3G, 4G hoặc Wifi.

          Bước 1: Truy cập https://sms.wpvn.xyz/api.php để tạo tài khoản quản lý API.
          Bước 2: Bạn lắp SIM vào điện thoại, tải App về và cài lên điện thoại Android. Sau đó mở app lên đăng nhập với thông tin đã được cung cấp qua email.
          Bước 3: Truy cập https://sms.wpvn.xyz/api.php để cấu hình số điện thoại và lấy API cho web.
          Bước 4: Cài plugin SMS Gateway lên website của bạn. Sau đó vào mục cài đặt plugin để nhập thông tin API đã lấy ở bước 3.

          Tham khảo tài liệu tại: doc.ntechpark.com/all-sms-gateway/

          Giải thích canonical trong wp

          Lưu bản nháp tự động
          Nội dung

            Phần tử liên kếtrel = ”canonical” – thường được gọi là URL chuẩn – cực kỳ quan trọng nhưng vẫn thường xuyên mắc phải các quan niệm sai lầm phổ biến và được sử dụng không chính xác ngay cả những SEO dày dạn kinh nghiệm trong ngành.

            Đặt Canonical URLs cho các bài đăng và trang WordPress

            Theo mặc định, Rank Math sử dụng URL của bài đăng / trang hiện tại làm URL chuẩn, vì vậy bạn chỉ cần thay đổi cài đặt này nếu bạn muốn thay đổi nó thành một cái gì đó khác.

            Lưu bản nháp tự động

            Đây còn được gọi làquy tắc tự tham chiếu, mà chúng tôi sẽ đề cập sau cùng với tất cả các trường hợp khác trong đó quy tắc chuẩn hóa có lợi.

            Đặt URL chuẩn theo cách thủ công (Nâng cao)

            Nếu trang web của bạn hiện không tận dụng được hệ thống quản lý nội dung WordPress hiện hỗ trợ hơn 40% tất cả các trang web trên internet, bao gồm các trang web như CNN, Bloomberg, v.v. – đây là cách bạn có thể đặt URL chuẩn cho các trang trên trang web của mình theo cách thủ công …

            Vì vậy, như đã đề cập trước đó – một URL chuẩn được đặt đơn giản bằng cách sử dụng thuộc tính liên kết HTML rel = ”canonical”. Do đó, để đặt một mã trên bất kỳ trang nào của trang web, chỉ cần thêm mã sau vào phần <head> </head> của mã nguồn HTML của trang web:

            <link rel = "canonical" href = "https://rankmath.com/about/">

            Và sau đó, chỉ cần thay thếhttps://rankmath.com/about/bằng URL mà bạn muốn đặt làm URL chuẩn cho trang mà bạn đã thêm mã ở trên vào.

            5Khi nào bạn nên sử dụng URL hợp quy?

            5.1Chuyển hướng 301 so với Sử dụng rel = canonical

            Bạn không chắc liệu việc triển khai chuyển hướng hoặc sử dụng chuẩn hóa sẽ có ý nghĩa hơn hay không? Cách dễ nhất để đặt nó là:

            Nếu có thể sử dụng chuyển hướng để khắc phục sự cố, hãysử dụng chuyển hướng. Tuy nhiên, hãysử dụng URL chuẩn nếu bạn vẫn muốn cả hai phiên bản của trang đều có thể truy cập được(chỉ là không có trong kết quả tìm kiếm) và đơn giản là bạn sẽ không thể sử dụng chuyển hướng để thực hiện điều đó. Nói cách khác, nếu một trang web giống hệt hoặc gần trùng lặp và không phục vụ mục đích nào khác trong việc truy cập internet (tức là người dùng trang web của bạn hoặc các công cụ tìm kiếm), thì chỉ cần chuyển hướng nó đến bất kỳ trang nào bạn coi là ưu tiên.

            Và khi điều này là không thể vì cả hai trang vẫn phục vụ mục đích hợp lệ và có giá trị là có thể truy cập được, thì hãy sử dụng URL chuẩn để chỉ định trang nào trong số các trang có liên quan mà bạn muốn công cụ tìm kiếm coi là trang gốc / trang chính.

            5.2Các trang có cần URL chuẩn tự tham chiếu không?

            Trong hình ảnh của Hộp Meta SEO Rank Math xuất hiện trước đó trong bài đăng này, chúng tôi không liên kết trang khác bằng cách chèn URL nhưng URL chuẩn được đặt thành chính trang hiện tại.

            Chúng tôi đặc biệt khuyên bạn nên có các phần tử liên kết rel = canonical trên tất cả các trang chủ yếu bởi vì điều này đã được áp dụng như một phương pháp hay nhất kể từ khi Google xác nhận rằng đây làcách tốt nhất để giải quyết vấn đề này.

            Tác dụng phụ tiềm ẩn của việc không có các URL chuẩn tự tham chiếu trên các trang trỏ đến phiên bản thuần túy của URL là dẫn đến lỗi nội dung trùng lặp. Đó là lý do tại sao việc thêm trang chuẩntự tham chiếuvào URL là một phương pháp hay – và bạn sẽ rất vui khi biết rằngplugin Rank Math SEOđã thực hiện điều này nên bạn không phải lo lắng về nó.

            Hầu hết mọi người đều cho rằng trang web của họ không có bất kỳ nội dung trùng lặp nào bởi vì họrõ ràngđã không cố ý xuất bản cùng một phần nội dung. Điều đó đang được nói, điều đó không nhất thiết đúng bởi vì các công cụ tìm kiếm thu thập dữ liệu các URL riêng lẻ, không phải các trang trên trang web của bạn.

            Có, điều này thực sự có nghĩa là họ sẽ thấy rankmath.com/blog/seo-audit và rankmath.com/blog/seo-audit? Id = 123là các trang duy nhất mặc dù là cùng một trang thực tế với nội dung rất giống nhau hoặc hoàn toàn giống nhau .

            https://rankmath.com/blog/seo-audit/
            https://rankmath.com/blog/seo-audit/?utm_source=active%20users&utm_medium=email
            http://rankmath.com/wordpress/seo-plugin/?utm_medium=twitter

            Các URL có chuỗi truy vấn như được hiển thị ở trên được gọi làURL được tham số hóavà có thể gây ra các vấn đề về nội dung trùng lặp trên các trang web – đặc biệt là nhữngURLcho phép lọc, chẳng hạn như các trang web Thương mại điện tử.

            Và đây là lý do tại saocác quy chuẩn tự tham chiếu lại vô cùng hữu ích. Mọi người có thể thường liên kết đến các URL có truy vấn và thông số UTM – có nghĩa là khi điều đó xảy ra, Google có thể bắt đầu chọn URL có thông số làm phiên bản chuẩn. Do đó, việc tận dụng các trang chuẩn tự tham chiếu giúp tránh tình trạng này bằng cách chỉ định rõ ràng URL nào bạn coi là phiên bản chính hoặc quan trọng nhất của trang đó.

            5.3URL chuẩn tên miền chéo

            Trong trường hợp bạn có cùng một phần nội dung trên nhiều miền, bạn cũng có thể sử dụng chuẩn hóa. Một ví dụ tuyệt vời về điều này là một số trang web cóp nhặt và chia sẻ lại nội dung từ các trang web không phải của trang web đó – có thể quản lý các bài viết trong một niche cụ thể. Nếu một URL chính tắc được đặt thành nguồn gốc của nội dung (nơi nó được xuất bản lần đầu tiên) thì bất kỳ liên kết nào trỏ đến phiên bản thứ hai sẽ được tính vào của phiên bản chuẩn gốc – tăng cơ hội xếp hạng của nội dung gốc.

            5.4Hợp chuẩn hóa cho các trang AMP

            Tài liệu HTMLAMPtheo yêu cầu để đặt URL chuẩn trên tất cả các trang AMP tham chiếu đến trang AMP tương đương (hoặc tự tham chiếu trang AMP nếu không có URL tương đương). Thẻ chuẩn là một phần tử HTML bắt buộc để nội dung AMP được coi làhợp lệvà trong những trường hợp có thể, thẻ chuẩn phải trỏ đến phiên bảnkhông phải AMPban đầu của nội dung.

            Lưu ý:Trong các trường hợp như vậy, phiên bản gốc không phải AMP của nội dung được sử dụng làm URL chuẩn trong trang AMP tương đương không thể tự không lập chỉ mục được (bằng bất kỳ phương pháp nào, bao gồm chuyển hướng 301, một URL chuẩn khác, v.v. .)

            Điều này là do điều này sẽ gửi các thông báo xung đột đến các công cụ tìm kiếm – khiến khả năng cao là trang AMP sẽ không hiển thị trong kết quả tìm kiếm.

            TL; DR – Thẻchuẩnlà yếu tố bắt buộc đểcác trang AMPđược coi là hợp lệ và thẻchuẩnphải quay lại phiên bản ‘không phảiAMP‘ ban đầu củatrang. NếutrangAMPđộc lập thì trangchuẩnphải tự tham chiếu.

            5.5Các phiên bản trang web khác nhau cho các thiết bị khác nhau

            Lưu bản nháp tự động

            Nếu bạn gặp trường hợp với một trang web có các trang dành cho máy tính để bàn và trang di động riêng biệt – nghĩa là hai phiên bản của trang web, chẳng hạn như một phiên bản tại rankmath.com và một phiên bản dành cho thiết bị di động tại m.rankmath.com – bạn nên sử dụng các URL chuẩn vàrel = alternateđể chỉ ra sự giống nhau / mối quan hệ giữa hai trang này.

            Lưu ý:Google là công cụ tìm kiếm duy nhất chính thức hỗ trợ việc triển khai này tại thời điểm này.

            Trên thực tế, đây là giao diện của điều này trên cả phiên bản Máy tính để bàn và Di động của một trang web:

            Máy tính để bàn

            Trên phiên bản dành cho máy tính để bàn của trang, URL chuẩn và URL thay thế trong<head>phần này trông như sau:

            <head>
            <link rel="canonical" href="https://rankmath.com/" />
            <link rel="alternate" href="https://m.rankmath.com/" />
            </head>

            Mobile

            Khi ở trên phiên bản dành cho thiết bị di động của trang, URL chuẩn trong<head>phần sẽ xuất hiện như sau:

            <head>
            <link rel="canonical" href="https://rankmath.com/" />
            </head>

            Bằng cách đó, các công cụ tìm kiếm sẽ dễ dàng hiểu được phiên bản nào của trang sẽ hiển thị cho thiết bị di động và phiên bản nào sẽ hiển thị cho người tìm kiếm trên Máy tính để bàn.

            6Những lầm tưởng và quan niệm sai lầm về URL chuẩn phổ biến

            Mặc dù đã xuất hiện được một thời gian, nhưng quá trình chuẩn hóa rất khó hiểu và rất dễ dẫn đến sai sót.

            Dưới đây là một số ví dụ về các sự cố phổ biến mà bạn có thể gặp phải khi sử dụng chuẩn hóa trên trang web của mình:

            6.1Sử dụng không đúng cách Canonicalization trên các trang web đa ngôn ngữ

            Lưu bản nháp tự động

            Các trang web đa ngôn ngữ thường sử dụng thẻ Hreflang để lưu trữ và hiển thị các phiên bản khác nhau của trang web dựa trên vị trí địa lý của người dùng.

            Đồng thời đặt URL được chuẩn hóa thành ‘Noindex’

            Việc sử dụng chuẩn hóa và không lập chỉ mục sẽ không có ý nghĩa.Chỉ không lập chỉ mục một trang không cho Google biết bạn muốn kết hợp trang nào với một trang khác và các tín hiệu xếp hạng sẽ được chuyển tiếp đến một trangchính đãnói .

            Khi Google nhìn thấy hai URL từ trang web của bạn, chúng trông giống nhau và bạn cho chúng tôi biết tùy chọn của mình một cách rõ ràng, chúng tôi sẽ cố gắng kết hợp chúng và coi chúng là một URL (thường là mạnh hơn) thay vì những URL riêng biệt. Chuyển hướng, rel = canonical, liên kết nội bộ và bên ngoài, sơ đồ trang web, hreflang, v.v. tất cả đều cho chúng tôi biết tùy chọn của bạn và bạn càng có thể căn chỉnh chúng, chúng tôi càng theo dõi chúng và sử dụng chúng để chọn một trang chuẩn từ tập hợp đó ( và chuyển tiếp tất cả các tín hiệu đến trang chuẩn đã chọn).

            Mặt khác, noindex (một mình) và không cho phép robots.txt (nói chung) không phải là dấu hiệu rõ ràng để chuẩn hóa. Việc chỉ có ngăn lập chỉ mục trên một trang không cho chúng tôi biết rằng bạn muốn kết hợp nó với thứ gì đó khác và các tín hiệu đó phải được chuyển tiếp. Việc không cho phép robots.txt thậm chí còn phức tạp hơn, chúng tôi thậm chí không biết liệu trang có khớp với bất kỳ trang nào khác trên trang web của bạn hay không, vì vậy chúng tôi thậm chí không thể sử dụng nó để chuẩn hóa nếu chúng tôi muốn.

            John Mueller,Nhà phân tích xu hướng quản trị trang webJohn Mueller

            Nói một cách đơn giản, bạn có thể nói rằngrel = canonicalthực hiện những gì chuyển hướng 301 làm; gán bất kỳ liên kết nào đến phiên bản không chuẩn cho phiên bản chuẩn nhưng không có chuyển hướng (vì bạn muốn có thể duy trì quyền truy cập vào cả hai trang).

            URL hợp quy dành cho các tình huống mà bạn không thể (và không nên) triển khai chuyển hướng 301.

            Tương tự, đừng làm những việc như chuẩn hóa trang A -> trang B và sau đó chuyển hướng trang B -> trang A hoặc chuỗi các thẻ chuẩn, chẳng hạn như trỏ trang A -> B, trang B -> C, v.v.). Gửi các tín hiệu rõ ràng là rất quan trọng vì bạn thường khiến các công cụ tìm kiếm đưa ra các quyết định tồi.

            Nếu bạn đã từng cân nhắc cả việc chuẩn hóa URL và không lập chỉ mục URL đó, bạn nên cân nhắc sử dụng chuyển hướng 301. Và nếu bạn không thể sử dụng chuyển hướng thì bạnchỉnên sử dụng rel = canonical.

            6.4Chỉ cho biết một phiên bản trang web ưa thích trong Google Search Console

            Một tùy chọn để đặt URL chính tắc là sử dụng Google Search Console để chỉ địnhmiềnchính tắcưa thích của bạn . Có một số lý do mà phương pháp này có lợi bao gồm nó nhanh chóng và cực kỳ dễ thực hiện.

            Tuy nhiên, cũng có một số vấn đề đã biết liên quan đến việc sử dụng phương pháp này. Ví dụ: nó sẽ được sử dụng để chỉ định một miền ưa thích nhưng bạn vẫn cần một plugin như Rank Math để dễ dàng chỉ định các URL chuẩn cho các bài đăng và trang cụ thể trên cơ sở cá nhân khi gặp các tình huống khác nhau.

            Và tất nhiên, một nhược điểm khác của phương pháp này là việc chỉ định miền ưa thích trong Google Search Console chỉ đặt đúng biến thể chuẩn cho Google, nhưng không làm như vậy cho các công cụ tìm kiếm khác.

            6.5Các URL chuẩn có được coi là chỉ thị cho các công cụ tìm kiếm không?

            Tuy nhiên,URL hợp quykhông được coi là chỉ thị, chúng được coi là tín hiệu của công cụ tìm kiếm.Điều này có nghĩa là chúng quan trọng và nên được sử dụng vì chúng giúp các công cụ tìm kiếm hiểu nội dung của trang web và cách nó liên quan đến nội dung khác trên trang web của bạn

            6.6Bạn có nên chuẩn hóa trang đầu tiên của một loạt bài được phân trang không?

            Không, đây là một quan niệm sai lầm rất phổ biến. Mỗi trang trong một chuỗi các trang được phân trang phải có URL chuẩn tự tham chiếu riêng. Nếu bạn đã thực hiện điều này trên trang web của mình hoặc đang làm như vậy – có khả năng Google sẽ chỉ nhận ra điều đó và bỏ qua tín hiệu (vì nó không phải là chỉ thị).

            6.7Bạn có thể đặt URL chuẩn làm URL tương đối không?

            Mặc dù thẻ liên kết chấp nhận URL tương đối, vì vậy nó thực sự được coi là HTML hợp lệ – việc sử dụng URL tương đối trong trang chuẩn có thể dẫn đến các vấn đề khác, bao gồm cả URL cơ sở được định cấu hình không chính xác, dẫn đến toàn bộ thiết lập trang chuẩn không hợp lệ.

            Trên thực tế, bản thân Google đã nêu một số vấn đề phổ biến nhất mà họ thấy với các trang chuẩn thực sự xuất phát từ việc sử dụng các URL tương đối.

            Tóm lại, vì mục đích của URL chuẩn là chỉ rõ chính xác URL nào là tùy chọn (với độ chính xác, không mơ hồ) nên điều này thực sự đạt được tốt nhất bằng cách sử dụng URL tuyệt đối khi đặt URL chuẩn trên trang web của bạn.

            Các trang web đa ngôn ngữ thường sử dụng thẻ Hreflang để lưu trữ và hiển thị các phiên bản khác nhau của trang web dựa trên vị trí địa lý của người dùng.

            Khi sử dụngthẻ hreflang,bạn nên chỉ định một trang chuẩn bằng cùng một ngôn ngữ hoặc ngôn ngữ thay thế tốt nhất có thể nếu một trang chuẩn không tồn tại cho cùng một ngôn ngữ.

            Điều đó đang được nói, nếu bạn chọn không chỉ ra một URL chuẩn, Google sẽ xác định những gì họnghĩlà phiên bản hoặc URL tốt nhất.

            Nếu bạn sử dụng WordPress làm hệ thống quản lý nội dung mà bạn lựa chọn (mà chúng tôi rất khuyên bạn nên sử dụng) và cung cấp nội dung cho khách truy cập trang web bằng nhiều ngôn ngữ, chúng tôi thực sự khuyên bạn nên sử dụng plugin dịchWeglotcho trang web của mình.

            Chúng tôi đã xác minh một cách độc lập rằng họ có xử lý quá trình chuẩn hóa như Google đã phác thảo và đề xuất.

            7Kết luận – Sử dụng đúng các URL hợp quy là quan trọng

            Và, đó là nó! Chúng tôi hy vọng chúng tôi có thể giải quyết hoàn toànmọi câu hỏi mà bạn từng có về URL chuẩnvà cách sử dụng chúng trong các tình huống bạn gặp phải và với các trang web bạn điều hành.

            Một trong những lý do chúng tôi thực sự xây dựng Rank Math là để loại bỏ công việc lặp đi lặp lại trong SEO như thế này.Đặt các URL chuẩn tùy chỉnh (chưa nói đến việc tự động đặt các URL chuẩn tự tham chiếu theo mặc định) – tất cả đều nhờ vào Rank Math & WordPress không thể dễ dàng hơn.