Lưu trữ danh mục: Website

Hiệu ứng dùng CSS

Hiệu ứng dùng CSS
Nội dung

    Tạo hiệu ứng chuyển động trong CSS3 cho phép chúng ta tạo ra các hiệu ứng mà không cần phải sử dụng Javascript hay Flash. Animation giúp Website chúng ta trở nên chuyên nghiệp mà bắt mắt với người dùng hơn. Trong bài viết này sẽ góp nhặt đến các bạn những hiệu ứng nhỏ gọn cho một thẻ div nhờ sử dụng HTML5 và CSS3.
    Gắn css trong bài viết

    
    
    
    

     

     

     

    Tạo hiệu ứng ánh sáng khi hover vào hình ảnh trong Flatsome

    Đoạn CSS sau theo đường dẫn:Giao diện > Tuỳ biến > Add custom CSS
    .product-small .box-image:hover::before{
    -webkit-animation:shine .75s;animation:shine .75s
    }
    @-webkit-keyframes shine{
    100%{left:125%}
    }
    @keyframes shine{
    100%{left:125%}
    }
    .product-small .box-image::before{
    position:absolute;
    top:0;
    left:-75%;
    z-index:2;
    display:block;
    content:'';
    width:50%;
    height:100%;
    background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.3) 100%);
    background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.3) 100%);
    -webkit-transform:skewX(-25deg);transform:skewX(-25deg)
    }

    Thu gọn tiêu đề sản phẩm thành 2 dòng

    p.name.product-title a {
    padding-top: 5px;
    text-align: center;
    color: #000;
    font-weight: 900;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;

    Lưu ý: Sửa các thông tin sau theo ý của bạn

    • -webkit-line-clamp: 2; là số dòng các bạn muốn cắt, nếu chỉ muốn cắt thành 1 dòng thì thay bằng số 1,..
    • font-weight: là độ dày của chữ, các bạn muốn nó thanh mảnh hơn thì giảm còn 600

    Chia Form thành 2 cột & Chèn icon vào Contact Form 7

    Đoạn HTML chèn vào tab “Nội dung Form”

    <div class="form-contact-twocol">
       <div id="info-left">
       <p>
    [text]

    <i id=”icon-form” class=”icon-user”></i></p>
    </div>
    <div id=”info-right”>
    <p>[tel* your-number placeholder “Di động *”]<i id=”icon-form” class=”icon-phone”></i></p>
    </div>
    </div>
    <p>[email your-email placeholder “Email”]<i id=”icon-form” class=”icon-envelop”></i></p>
    <p>

    
    [text]

    <i id=”icon-form” class=”icon-pen-alt-fill”></i></p>
    <p>[textarea your-message placeholder “Nội dung email…”]<i id=”icon-form” class=”icon-chat”></i></p>
    <center>[submit class:button primary “Gửi Đi”]</center>

     Đoạn CSS chia cột và chèn icon vào Form, các bạn dán vào mục “CSS tùy chỉnh” trong “Tùy biến” hoặc mục “Custom CSS” trong “Advance” của theme Flatsome.
    /*-- chia cột Form --*/#info-left {
        width: 49%;
        float: left;
        margin-right:2%;
    }
    #info-right {
        width: 49%;
        float: right;
    }
    .form-contact-twocol:after {
        content:"020";
        display:block;
        height:0;
        clear:both;
        visibility:hidden;
        overflow:hidden;
        margin-bottom:10px;
    }
    .form-contact-twocol {
        display:block;
    }
    /*-- Chèn icons lên Form --*/.wpcf7 p{ position: relative; }
    #icon-form{
      position: absolute;
      color: #666666;
      z-index: 100;
      font-size: 18px;
      top: 8px;
      right: 10px;
    }

    Hiệu ứng dùng CSS


    .btn-11 {
    border: none;
    background: rgb(4 34 145);
    background: linear-gradient(0deg,rgb(7 35 124)0%,rgb(0 100 251)100%);
    color: #fff;
    overflow: hidden;
    }
    .btn-11:hover {
    text-decoration: none;
    color: #fff;
    }
    .btn-11:before {
    position: absolute;
    content: '';
    display: inline-block;
    top: -180px;
    left: 0;
    width: 30px;
    height: 100%;
    background-color: #fff;
    animation: shiny-btn1 3s ease-in-out infinite;
    }
    .btn-11:hover{
    opacity: .7;
    }
    .btn-11:active{
    box-shadow: 4px 4px 6px 0 rgba(255,255,255,.3),
    -4px -4px 6px 0 rgba(116, 125, 136, .2),
    inset -4px -4px 6px 0 rgba(255,255,255,.2),
    inset 4px 4px 6px 0 rgba(0, 0, 0, .2);
    }

    @-webkit-keyframes shiny-btn1 {
    0% { -webkit-transform: scale(0) rotate(45deg); opacity: 0; }
    80% { -webkit-transform: scale(0) rotate(45deg); opacity: 0.5; }
    81% { -webkit-transform: scale(4) rotate(45deg); opacity: 1; }
    100% { -webkit-transform: scale(50) rotate(45deg); opacity: 0; }
    }
    https://codepen.io/yuhomyan/pen/OJMejWJ
    https://codepen.io/derekmorash/pen/XddZJY

    https://www.laixe.xyz/2020/07/tao-hieu-ung-rung-lac-khi-re-chuot-vao-anh.html

    img.shake-image:hover {
    /* Start the shake animation and make the animation last for 0.5 seconds */
    animation: shake 0.5s;
    /* When the animation is finished, start again */
    animation-iteration-count: infinite;
    }

    @keyframes shake {
    0% { transform: translate(1px, 1px) rotate(0deg); }
    10% { transform: translate(-1px, -2px) rotate(-1deg); }
    20% { transform: translate(-3px, 0px) rotate(1deg); }
    30% { transform: translate(3px, 2px) rotate(0deg); }
    40% { transform: translate(1px, -1px) rotate(1deg); }
    50% { transform: translate(-1px, 2px) rotate(-1deg); }
    60% { transform: translate(-3px, 1px) rotate(0deg); }
    70% { transform: translate(3px, 1px) rotate(-1deg); }
    80% { transform: translate(-1px, -1px) rotate(1deg); }
    90% { transform: translate(1px, 2px) rotate(0deg); }
    100% { transform: translate(1px, -2px) rotate(-1deg); }
    }

    https://www.niemvuilaptrinh.com/article/Cach-Tao-Hieu-Ung-Zoom-Effect-Cho-Trang-Web2020
    https://codepen.io/haycuoilennao19/pen/NWNbdQJ
    https://dev.to/vaishali1192/create-zoom-in-zoom-out-animation-effect-in-css-5hmg


    .zoom-in-out {
    margin: 24px;
    width: 40%;
    animation: zoom-in-zoom-out 4s ease-out infinite;
    }
    .zoom-in-zoom-out {
    margin: 24px;
    width: 50px;
    height: 50px;
    background: green;
    animation: zoom-in-zoom-out 2s ease-out infinite;
    }
    @keyframes zoom-in-zoom-out {
    0% {
    transform: scale(1, 1);
    }
    50% {
    transform: scale(1.5, 1.5);
    }
    100% {
    transform: scale(1, 1);
    }
    }

    https://blog.hubspot.com/website/css-animation-examples https://blog.hubspot.com/website/css-animation

    Hiệu ứng 3 box xoay vòng

    https://dev.to/pixmy/create-waves-with-pure-css-5gp

    https://codepen.io/Pixmy/pen/qaYQoV

     


    .boxwave {
    position: fixed;
    top: 0;
    transform: rotate(80deg);
    left: 0;
    }

    .wave {
    position: fixed;
    top: 0;
    left: 0;
    opacity: .4;
    position: absolute;
    top: 3%;
    left: 10%;
    background: #0af;
    width: 354px;
    height: 495px;
    margin-left: -150px;
    margin-top: -250px;
    transform-origin: 50% 48%;
    border-radius: 43%;
    animation: drift 7000ms infinite linear;
    }

    .wave.-three {
    animation: drift 7500ms infinite linear;
    position: fixed;
    background-color: #77daff;
    }

    .wave.-two {
    animation: drift 3000ms infinite linear;
    opacity: .1;
    background: black;
    position: fixed;
    }

    .boxwave:after {
    content: ”;
    display: block;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 11;
    transform: translate3d(0, 0, 0);
    }
    @keyframes drift {
    from { transform: rotate(0deg); }
    from { transform: rotate(360deg); }
    }

    Hiệu ứng chuyển màu

     

    code-boxx.com/css-animation-background-color

     


    #animation-background-color {
    width: 100%;
    height: 100px;
    animation: morph 3s infinite alternate;
    }
    @keyframes morph {
    0% { background-color: rgba(0, 0, 0, 0); }
    50% { background-color: rgba(255, 0, 0, 0.5); }
    100% { background-color: rgba(0, 255, 0, 1); }
    }

     

    Scrolling Text Animation

    https://codepen.io/yoannhel/pen/sJpDj

    Hello

    • world !
    • bob !
    • users !
    • everybody !

    .animation {
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
    height: 160px;
    overflow:hidden;
    }
    .animation__container {
    font-weight: 600;
    overflow: hidden;
    height: 40px;
    padding: 0 40px;
    }
    .animation__container:before {
    content: "[";
    left: 0;
    }

    .animation__container:after {
    content: “]”;
    position: absolute;
    right: 0;
    }

    .animation__container:after, .animation__container:before {
    position: absolute;
    top: 0;

    color: #16a085;
    font-size: 42px;
    line-height: 40px;

    -webkit-animation-name: opacity;
    -webkit-animation-duration: 2s;
    -webkit-animation-iteration-count: infinite;
    animation-name: opacity;
    animation-duration: 2s;
    animation-iteration-count: infinite;
    }
    .animation__container__text {
    display: inline;
    float: left;
    margin: 0;
    }

    .animation__container__list {
    margin-top: 0;
    padding-left: 110px;
    text-align: left;
    list-style: none;

    -webkit-animation-name: change;
    -webkit-animation-duration: 10s;
    -webkit-animation-iteration-count: infinite;
    animation-name: change;
    animation-duration: 10s;
    animation-iteration-count: infinite;
    }
    .animation__container__list__item {
    line-height:40px;
    margin:0;
    }

    @-webkit-keyframes opacity {
    0%, 100% {opacity:0;}
    50% {opacity:1;}
    }

    @-webkit-keyframes change {
    0%, 12.66%, 100% {transform:translate3d(0,0,0);}
    16.66%, 29.32% {transform:translate3d(0,-25%,0);}
    33.32%,45.98% {transform:translate3d(0,-50%,0);}
    49.98%,62.64% {transform:translate3d(0,-75%,0);}
    66.64%,79.3% {transform:translate3d(0,-50%,0);}
    83.3%,95.96% {transform:translate3d(0,-25%,0);}
    }

    @-o-keyframes opacity {
    0%, 100% {opacity:0;}
    50% {opacity:1;}
    }

    @-o-keyframes change {
    0%, 12.66%, 100% {transform:translate3d(0,0,0);}
    16.66%, 29.32% {transform:translate3d(0,-25%,0);}
    33.32%,45.98% {transform:translate3d(0,-50%,0);}
    49.98%,62.64% {transform:translate3d(0,-75%,0);}
    66.64%,79.3% {transform:translate3d(0,-50%,0);}
    83.3%,95.96% {transform:translate3d(0,-25%,0);}
    }

    @-moz-keyframes opacity {
    0%, 100% {opacity:0;}
    50% {opacity:1;}
    }

    @-moz-keyframes change {
    0%, 12.66%, 100% {transform:translate3d(0,0,0);}
    16.66%, 29.32% {transform:translate3d(0,-25%,0);}
    33.32%,45.98% {transform:translate3d(0,-50%,0);}
    49.98%,62.64% {transform:translate3d(0,-75%,0);}
    66.64%,79.3% {transform:translate3d(0,-50%,0);}
    83.3%,95.96% {transform:translate3d(0,-25%,0);}
    }

    @keyframes opacity {
    0%, 100% {opacity:0;}
    50% {opacity:1;}
    }

    @keyframes change {
    0%, 12.66%, 100% {transform:translate3d(0,0,0);}
    16.66%, 29.32% {transform:translate3d(0,-25%,0);}
    33.32%,45.98% {transform:translate3d(0,-50%,0);}
    49.98%,62.64% {transform:translate3d(0,-75%,0);}
    66.64%,79.3% {transform:translate3d(0,-50%,0);}
    83.3%,95.96% {transform:translate3d(0,-25%,0);}
    }

     

    https://thichchiase.com/programing/css/30-hieu-ung-pure-css-animation-snippets/

    https://viblo.asia/p/14-css-tao-hieu-ung-cho-background-tuyet-dep-LzD5djaeZjY

    Gradient Background Animation


    .h100 {
    background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
    background-size: 400% 400%;
    animation: gradient 15s ease infinite;
    width: 200px;
    height: 200px;
    }

    @keyframes gradient {
    0% {
    background-position: 0% 50%;
    }
    50% {
    background-position: 100% 50%;
    }
    100% {
    background-position: 0% 50%;
    }
    }

    Chống SPAM cho Contact Form 7

    Theo https://levantoan.com/chia-se-cach-chong-spam-cho-contact-form-7-hieu-qua-nhat/ có 4 cách

    1: Chống spam bằng field ẩn

    2: Format số điện thoại theo định dạng Việt Nam

    3: Thêm dạng câu hỏi – trả lời vào form

    4: Chống spam bằng cách kiểm tra người dùng đã cuộn chuột (scroll) hay chưa

    Mà bạn đã cài akismet, recaptcha, wordfence, format sđt theo Việt Nam mà vẫn bị spam.

    Thư viện Media dùng chung cho WordPress Multisite

    Thư viện Media dùng chung cho Wordpress Multisite
    Nội dung

      WordPress Multisite là gì?

      Một trong những các tính năng thú vị nhất của WordPress nhưng chúng ta lại ít khi tận dụng đó chính là tính năng tạo một mạng lưới nhiều website trên một mã nguồn WordPress duy nhất, tính năng này họ gọi là WordPress Multisite. Ví dụ như trang wpvn.xyz có nhiều trang con như design.wpvn.xyz, code.wpvn.xyz, music.wpvn.xyz và chúng ta có thể sử dụng WordPress Multisite để tạo nhiều trang con trong một mạng lưới như vậy, thậm chí có thể kết nối các người dùng ở mỗi website lại với nhau để họ có thể đăng nhập được trên bất kỳ trang nào trong mạng lưới.

      Lợi ích và không nên dùng khi nào WordPress Multisite

      Dễ dàng quản lý bản cập nhật của mã nguồn và của các plugin/theme bởi vì tất cả các website con trong mạng lưới đều dùng chung một mã nguồn, một phiên bản theme và plugin.
      Có thể tạo ra bao nhiêu website con tùy thích và dễ dàng phân quyền, quản lý nó.
      Tiết kiệm tài nguyên vì dùng một mã nguồn cho nhiều website sẽ tiết kiệm hơn là mỗi website một mã nguồn.

      Tuy nhiên, chúng ta nên cân nhắc không nên sử dụng WordPress Multisite khi:

      Bạn cần database riêng bởi vì tất cả các website con trong một mạng lưới sẽ dùng chung một database, chỉ là nó có những bảng dữ liệu riêng.
      Hosting từng website riêng biệt.

      Nhìn chung nếu bạn cần xây dựng một hệ thống website mà bạn tin rằng sẽ không có sự khác biệt quá lớn về hình thức thì có thể dùng tính năng này.

      Bật Wordpress Multisite ở trang chính

      Bây giờ bạn mở tập tin wp-config.php của website mẹ cần kích hoạt tính năng này và chèn đoạn sau vào

      define( ‘WP_ALLOW_MULTISITE’, true );

      Sau đó vào lại trang quản trị WordPress tìm mục Tools -> Network Setup để bắt đầu cài đặt.

      Nhưng trước khi chúng ta cài đặt thì cần xác định sẽ sử dụng kiểu WordPress Multisite nào, hiện tại nó có 2 kiểu là:

      • Subdomain: Các website con sẽ là một địa chỉ theo dạng subdomain của website mẹ. Ví dụwordpress.thachpham.net, seo.thachpham.net, hosting.thachpham.net,…Và nếu bạn dùng kiểu này sẽ cần thiết lập wildcard DNS như mình hướng dẫn phía dưới.
      • Sub-directory: Các website con sẽ là một địa chỉ theo dạng thư mục con. Ví dụ:thachpham.net/wordpress, thachpham.net/seo, thachpham.net/hosting,…

      PhầnNetwork Detailsbạn nhập tên mạng và địa chỉ email của người quản trị cao nhất vào nhé.

      Sau đó nhấp nútInstallđể bắt đầu cài đặt. Nó sẽ chuyển bạn đến trang kế tiếp và bắt đầu chèn những code vào tập tin theo hướng dẫn. Cụ thể là chèn code phía trên vào bên dưới<?phptrongwp-config.phpvà code phía là thay thế các code có sẵn trong.htaccess

      Sau khi chèn xong các code theo yêu cầu bạn ấn nút Log In để đăng nhập lại và bây giờ bạn sẽ thấy trên menu quản trị có thêm phầnMy Sitesđể truy cập vào các website con.

      Thiết lập trang Media dùng chung các website

      Một thư viện Media dùng để quản lí tất cả hình ảnh, tập tin đính kèm trong quá trình đăng sản phẩm, tin tức mới. Việc có nhiều website dùng chung tài nguyên phải tốn upload nhiều lần cũng như làm tăng dung lượng hosting. Vi thế việc sử dụng chung như thế là điều cần thiết. Ở đây mình sẽ có 2 plugin cùng chung mục đích trung tâm Media được chia sẻ cho tất cả các trang web trên mạng Multisite.

      Network Media Library

      https://github.com/humanmade/network-media-library

      Mô tả:

      Plugin nhỏ này chia sẻ phương tiện một cách minh bạch từ một trang Media trung tâm đến tất cả các trang khác trên mạng. Tất cả các phương tiện được tải lên đều được chuyển hướng minh bạch đến trang web trung tâm và sau đó được cung cấp trên toàn mạng. Không có gì được sao chép, nhân bản, đồng bộ hóa hoặc nhân bản, vì vậy đối với mỗi tệp được tải lên chỉ có một tệp đính kèm và một bản sao của tệp.

      Yêu cầu tối thiểu PHP: 7.0 WordPress: 4.9

      Plugin phải được cài đặt dưới dạng kích hoạt cho mọi trang. Do đó không thể được kích hoạt trên các trang web riêng lẻ trên mạng.

      Trước khi kích hoạt phải xem ID website trong mục Tất cả trang mạng (ở đây mặc định là 2) được sử dụng theo mặc định làm thư viện phương tiện trung tâm. Bạn nên định cấu hình ID trang web thư viện Media của mình thông qua chỉnh trong file network-media-library hoặc thông qua hook network-media-library/site_id. Ví dụ:

      add_filter( 'network-media-library/site_id', function( $site_id ) {
          return 123;
      } );

      Cách sử dụng

      Sử dụng thư viện Media trên các trang web trong mạng của bạn giống như cách bạn làm bình thường. Tất cả các Media sẽ được lưu trữ minh bạch trên và cung cấp từ trang web thư viện Media trung tâm đã chọn. Chỉ có thể xóa các tệp đính kèm trong khu vực quản trị của thư viện Media trung tâm. Khả năng tương thích Thư viện Media mạng hoạt động minh bạch và liền mạch với tất cả chức năng phương tiện WordPress tích hợp sẵn, bao gồm tải lên tệp, cắt hình ảnh, chèn phương tiện vào bài đăng và xem tệp đính kèm. Chức năng của nó hoạt động với biểu tượng trang web, biểu trưng trang web, hình ảnh nền và tiêu đề, hình ảnh nổi bật, phòng trưng bày, tiện ích âm thanh và hình ảnh, và quản lý phương tiện thông thường. Plugin hoạt động với trình chỉnh sửa khối, trình chỉnh sửa cổ điển, API REST, XML-RPC và tất cả các điểm cuối Ajax tiêu chuẩn để quản lý phương tiện. Các liên kết đến phương tiện từ các trang khác hầu hết đều hoạt động. Khả năng tương thích với các plugin của bên thứ ba là tốt, nhưng không được đảm bảo. Các plugin và thư viện sau được Thư viện phương tiện mạng hỗ trợ rõ ràng:

      • Advanced Custom Fields
      • Regenerate Thumbnails
      • WP User Avatars

      Các plugin và thư viện sau đã được kiểm tra và xác nhận là tương thích ngay lập tức:

      • BuddyPress
      • Extended CPTs
      • Gutenberg
      • Stream
      • User Profile Picture

      Multisite Global Media

      https://github.com/humanmade/Multisite-Global-Media

      Plugin bổ sung một tab mới vào phương thức đa phương tiện, giúp bạn có cơ hội chia sẻ phương tiện từ một trang web đến tất cả các trang web khác của mạng. File multisite-global-media.php sử dụng ID của website trong mục Tất cả trang mạng sẽ là nơi lưu trữ phương tiện toàn cầu. Hiện tại ID trang được đặt ở const SITE_ID = 3; trong file multisite-global-media.php, bạn có thể thay đổi giá trị này để đặt một trong những trang khác làm mặc định để lưu trữ phương tiện toàn cầu. Thông thường chúng ta không nên thay đổi nguồn. Nó dễ dàng hơn nhiều cho việc bảo trì và các điểm khác. Vì vậy, nếu bạn quen thuộc với mã trong ngữ cảnh WordPress, hãy sử dụng hook để thay đổi ID trang web mặc định của plugin bằng một tùy chỉnh nhỏ. Bạn cũng có thể đặt bằng hook global_media.site_id, ví dụ:

      add_filter( 'global_media.site_id', 1234 );

      Thư viện Media dùng chung cho WordPress Multisite

      Thư viện Media dùng chung cho WordPress Multisite

       

       

      Hiện ảnh 3D/VR lên trang web

      Hiện ảnh 3D/VR lên trang web
      Nội dung

        Có được website chất lượng là điều mà bất cứ doanh nghiệp nào cũng hết sức quan tâm. Website thông thường, người dùng chỉ được chiêm ngưỡng những hình ảnh sắc nét và hoàn hảo nhất. Tuy nhiên, với thiết kế web thực tế ảo VR, từ hình ảnh đến âm thanh đều được truyền tải một cách hoàn hảo. Mang đến một cái nhìn toàn diện và đầy ấn tượng với khách hàng. Từ đó tạo được sự thu hút, chú ý và tò mò của họ.
        Bằng việc ứng dụng công nghệ VR, website có thực tế ảo mang đến cảm nhận về chiều sâu, tạo sự hứng thú, tò mò khám phá, mong muốn tham quan không gian hay sản phẩm của doanh nghiệp hơn là những hình ảnh, video thông thường. Khách hàng có thể hiểu rõ sản phẩm/ dịch vụ mà doanh nghiệp cung cấp một cách dễ dàng và chi tiết khi thao tác với không gian thực tế ảo. Một doanh nghiệp sử dụng công nghệ thực tế ảo có ưu thế đạt được tầm nhìn về nâng cao trải nghiệm khách hàng, xây dựng hình ảnh thương hiệu lâu dài đối với khách hàng mới và giữ chân những khách hàng hiện có.. Điều mà các website thông thường không thể đạt được.

        Nền tảng website thực tế ảo VR được xem công cụ hữu ích, cải thiện marketing. Nhờ đó mà sản phẩm hay dịch vụ của doanh nghiệp tiếp cận khách hàng với sự hài lòng lớn nhất. Ảnh / video 3D mang đến nhiều lợi ích cho các ngành như du lịch (du lịch thực tế ảo), bất động sản, kiến trúc, văn phòng, trường học,… Các doanh nghiệp nên cân nhắc phương pháp kết hợp công nghệ mới như thực tế ảo vào hoạt động kinh doanh, tiếp thị của mình để trở nên khác biệt, tạo ấn tượng là người tiên phong áp dụng công nghệ mới trong mắt công chúng.

        Quy trình tạo ra hình ảnh 3D/VR cho một căn nhà

        Bước 1: Chuẩn bị camera 360 độ phù hợp

        Để tạo ra một sản phẩm 3D/VR cho căn nhà của bạn thì thiết bị cần thiết là một chiếc máy quay 360 độ. Ngày nay có rất nhiều loại camera 360 độ với nhiều mức giá khác nhau, phù hợp với đa dạng nhu cầu.

        Theo Rever khảo sát, các camera 360 độ thông dụng hiện nay có mức giá dao động từ 250 USD đến 3,400 USD (chưa bao gồm thuế, phí), như:

        • Ricoh Theta V (380 USD)
        • Insta360 One X (456 USD)
        • Ricoh Theta Z1 (1,000 USD)
        • Matterport Pro2 (3,400 USD)

        Bạn nên xem xét các đánh giá chuyên sâu về các loại camera 360 độ thông dụng trên thị trường; so sánh giá cả, tính năng, độ phân giải, thời lượng pin và thao tác sử dụng để tìm ra cho mình thiết bị phù hợp nhất.

        Ngoài ra, để chất lượng hình ảnh chuyên nghiệp hơn, bạn nên đầu tư vào một chân máy ổn định với giá treo hỗ trợ quay toàn cảnh.

        Các thiết bị này sẽ giúp các góc trong hình ảnh của bạn thẳng hàng khi chúng được ghép lại với nhau và hình ảnh 3D/VR của căn nhà sẽ xuất hiện liền mạch hơn, chân thật hơn.

        Bước 2: Lập danh sách các phòng cần quay

        Lập danh sách tất cả các phòng trong căn nhà mà bạn muốn tiến hành tạo ra hình ảnh 3D/VR.

        Trước hết, bạn đi qua từng phòng và xác định các vị trí trung tâm ở từng phòng. Đây sẽ là các vị trí đặt máy quay mà thu được nhiều đặc điểm của căn phòng nhất.

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

        Ở mỗi phòng bạn nên tìm ra 1, 2 vị trí thích hợp nhất để đặt máy.

        Để tránh việc bỏ sót bất cứ một không gian nào trong căn nhà, bạn nên lập một checklist gồm danh sách các phòng và các vị trí đặt máy tương ứng.

        Bạn không nên bỏ qua một không gian, một phòng nào. Mỗi một không gian trong căn nhà đều có tầm quan trọng đối với mỗi đối tượng khách mua tiềm năng khác nhau. Tùy theo nhu cầu của từng người mua mà họ sẽ dành sự quan tâm khác nhau cho các phòng khác nhau.

        Bước 3: Tiến hành quay từng phòng

        Trước ra bắt đầu quay, bạn cần đảm bảo rằng căn phòng đang trong tình trạng đẹp mắt nhất có thể. Bạn nên dời đi bất cứ thứ gì cản trở ống kính, đảm bảo rằng camera sẽ quay rõ toàn bộ căn phòng.

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

        Bạn cần đảm bảo phòng ốc sạch sẽ, gọn gàng để hình ảnh hiện lên bắt mắt nhất.

        Căn phòng nên trong tình trạng ngăn nắp, sạch sẽ. Bạn hãy dọn dẹp những vật dụng khiến căn phòng trông lộn xộn hoặc khiến người mua phân tâm khỏi những ưu điểm của căn phòng.

        Đồng thời, bạn cũng nên đảm bảo căn phòng có đầy đủ ánh sáng để các điểm nổi bật được hiển thị trong tình trạng tốt nhất.

        Bước 4: Tải hình ảnh lên nền tảng lưu trữ

        Hiện nay có rất nhiều nền tảng lưu trữ giúp tải lên hình ảnh 360 độ và tạo ra VR Tour, có thể kể đến những cái tên nổi bật như: Matterport, iStaging, Asteroom, Ogulo, Immoviewer, Box Brownie, Giraffe360,…

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

        Ở nhiều nền tảng sẽ giúp bạn sắp xếp lại các hình ảnh 3D thành một mô hình liền mạch.

        Các công cụ chỉnh sửa trên nhiều nền tảng này sẽ ghép các hình ảnh 360 độ của bạn lại với nhau để tạo nên một chuyến tham quan 360 độ toàn cảnh căn nhà.

        Chi phí để sử dụng các nền tảng này cũng thay đổi đa dạng, dao động từ 50 USD – 400 USD/tháng. Trong đó, nền tảng Matterport cung cấp nhiều công cụ nâng cao và chuyên nghiệp có chi phí từ 250 USD – 400 USD/tháng.

        Hướng dẫn xem nhà 3D View

        Bạn có thể ngồi tại chỗ để khám phá mọi ngóc ngách của căn nhà, từ phòng này sang phòng khác, thậm chí đo chiều dài của từng chi tiết trong căn nhà. Dưới đây là các hướng dẫn nhằm giúp bạn hiểu rõ hơn về cách thức sử dụng chức năng 3D View tại các căn nhà được đăng web.

        Công nghệ Rever giúp khách hàng

        Rever có thể xem như một trong những đơn vị tiên phong mang đến giải pháp xem nhà 3D/VR tại Việt Nam. Đây không chỉ là một giải pháp hữu hiệu mùa giãn cách mà còn hứa hẹn mang đến nhiều đột phá trong hoạt động mua bán nhà đất.

        Trước đây, người mua nhà phải đến tận nơi để xem nhà bất kể trở ngại về khoảng cách di chuyển, điều kiện thời tiết,… Hoặc trong những lúc hy hữu như thời gian xảy ra đại dịch COVID-19 thì việc đi xem nhà sẽ bị xếp vào hoạt động không thiết yếu!

        Không những vậy, một thống kê cho biết trung bình một người phải đi xem 9 căn mới mua được 1 căn như ý. Theo đó, để tìm được “tổ ấm đích thực”, người mua phải bỏ phí rất nhiều thời gian và công sức di chuyển chỉ để xem những căn nhà không đúng nhu cầu.

        Còn một cách khác là xem nhà qua hình ảnh được người bán đăng tải lên internet. Nhưng cách thức này cũng tồn tại nhiều nhược điểm như không thể xem hết mọi ngóc ngách trong căn nhà, không thể nắm bắt được mặt bằng các tầng cũng như không mang đến cảm nhận chân thật về không gian nhà.

        Hiện ảnh 3D/VR lên trang web

        Trong thời gian giãn cách xã hội, việc đi xem nhà sẽ bị xếp vào hoạt động không thiết yếu.

        Nhưng, công nghệ luôn phát triển không ngừng để đáp ứng nhu cầu của con người, công nghệ áp dụng trong ngành bất động sản cũng vậy. Đó là lý do mà trên thế giới, trong những năm gần đây, khái niệm xem nhà 3D/VR thường xuyên được nhắc đến.

        Nắm bắt nhu cầu thị trường và đi tiên phong trong lĩnh vực công nghệ bất động sản tại Việt Nam, Rever từ sớm đã giới thiệu công nghệ xem nhà 3D/VR đến người mua trên website rever.vn.

        Với công nghệ xem nhà 3D/VR tại Rever, người mua có thể ngồi tại gia mà vẫn xem được từng ngóc ngách của căn nhà. Chỉ với smartphone hay máy tính, không gian căn nhà sẽ hiện lên một cách chân thật, rõ nét ngay trước mắt chúng ta.

        Hiện ảnh 3D/VR lên trang web

        Hình ảnh 3D của một căn hộ áp dụng công nghệ 3D/VR tại rever.vn.

        Công nghệ 3D/VR mang đến một chân trời trải nghiệm mới cho người mua nhà, điều mà số đông chúng ta trước đây chỉ thấy trong phim viễn tưởng. Với một mô hình thu nhỏ của căn nhà dưới dạng 3D được gói gọn trong smartphone hay máy tính, người mua có thể dễ dàng phóng to/thu nhỏ từng chi tiết, nhanh chóng “di chuyển” quan sát giữa các tầng, cảm nhận không gian nhà ở từng góc nhìn khác nhau.

        Thêm vào đó, người mua cũng có thể quan sát căn nhà dưới dạng mặt bằng. Chức năng này giúp người mua có cái nhìn trực quan về thứ tự bố trí các phòng cũng như cách sắp xếp nội thất của căn nhà.

        Ngoài ra, công nghệ tiên phong này còn mang đến chức năng thước đo. Chỉ với vài thao tác đơn giản, người mua có thể biết được độ rộng của cánh cửa, độ cao của cửa sổ hay khoảng cách giữa các phòng,…

        Hiện ảnh 3D/VR lên trang web

        Không chỉ xem nhà, công nghệ 3D/VR tại Rever còn giúp bạn đo đạc từng chi tiết trong căn nhà.

        “Sau khi xem nhà 3D ưng ý thì tôi đến nhà trực tiếp để chốt mua. Tôi hầu như không cần hướng dẫn của chủ nhà mà vẫn có thể chủ động đi xem từng phòng, cứ như đã nắm rõ căn nhà trong lòng bàn tay vậy, dù tôi chỉ mới đến trực tiếp lần đầu thôi!”, anh Lam Nguyên (ngụ tại TP. Thủ Đức, TP.HCM), là một khách hàng đã mua nhà thông qua phương thức xem nhà 3D/VR tại Rever tỏ ra vô cùng tâm đắc với độ chân thật của công nghệ này.

        Trên thế giới, công nghệ xem nhà 3D/VR càng chứng tỏ được ưu thế rõ ràng hơn suốt thời gian đại dịch COVID-19 vừa qua, khi việc xem nhà trực tiếp vấp phải nhiều trở ngại. Tại Mỹ và Anh, nhiều giao dịch triệu đô đã thành công khi khách mua chỉ xem nhà bằng công nghệ này trên smartphone của mình.

        Tại Trung Quốc, người mua đã “bình thường hóa” việc mua nhà mà chỉ cần xem mô hình 3D trên các thiết bị điện tử, sức cạnh tranh của những căn nhà bán có bao gồm công nghệ 3D/VR cũng ngày càng lớn tại quốc gia tỷ dân này.

        Hiện ảnh 3D/VR lên trang web

        Trên thế giới, công nghệ xem nhà 3D/VR càng chứng tỏ được ưu thế rõ ràng hơn suốt thời gian đại dịch COVID-19.

        Tại Việt Nam, công nghệ xem nhà 3D/VR tại Rever cũng hứa hẹn tạo nên cuộc cách mạng trong mua bán nhà đất. Đây không chỉ là giải pháp tạm thời mùa dịch mà còn là tương lai đầy hứa hẹn của ngành bất động sản.

        Công nghệ tiên phong này vừa là lời giải cho những bất cập của phương thức xem nhà truyền thống, vừa là chìa khóa góp phần mở lối cho xu hướng đầu tư bất động sản Việt Nam của giới đầu tư nước ngoài.

        Với tinh thần luôn luôn quan tâm, lắng nghe và cải tiến của Rever, công nghệ xem nhà 3D/VR sẽ ngày càng hoàn thiện để mang đến những trải nghiệm mua nhà ngày một tốt hơn cho khách hàng, giúp việc giao dịch bất động sản ngày càng trơn tru và dễ dàng hơn.

        Cách đăng hình ảnh 3D/VR lên WordPress không sử dụng plugin

        Bạn phải tạo ra một tập tin PHP để hiển thị ảnh 360, sau đó dùng iframe để chèn hình ảnh 360 độ vào bài viết.

        <?php
        $src = isset( $_GET['src'] ) ? $_GET['src'] : '';
         
        if ( empty( $src ) ) {
        return;
        }
         
        $title = isset( $_GET['title'] ) ? $_GET['title'] : 'Hình ảnh 360';
        $type  = isset( $_GET['type'] ) ? $_GET['type'] : 'equirectangular';
        $type  = strtolower( $type );
        ?>
        <!DOCTYPE html>
        <html lang="vi">
        <head>
        <title><?php echo $title; ?></title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
        <style>
        body {
        background-color: #000000;
        margin: 0;
        overflow: hidden;
        }
         
        canvas,
        img {
        cursor: hand;
        }
         
        canvas,
        img {
        cursor: -webkit-grab;
        }
        </style>
        </head>
        <body>
        <div id="container"></div>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/90/three.min.js"></script>
        <script async>
        var camera, scene, renderer;
         
        var isUserInteracting = false,
        onMouseDownMouseX = 0, onMouseDownMouseY = 0,
        lon = 0, onMouseDownLon = 0,
        lat = 0, onMouseDownLat = 0,
        phi = 0, theta = 0;
         
        init();
        animate();
         
        function init() {
         
        var container, mesh;
         
        container = document.getElementById('container');
         
        camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1100);
        camera.target = new THREE.Vector3(0, 0, 0);
         
        scene = new THREE.Scene();
         
        var geometry = new THREE.SphereBufferGeometry(500, 60, 40);
         
        geometry.scale(-1, 1, 1);
         
        var material = new THREE.MeshBasicMaterial({
        map: new THREE.TextureLoader().load('<?php echo $src; ?>')
        });
         
        mesh = new THREE.Mesh(geometry, material);
         
        scene.add(mesh);
         
        renderer = new THREE.WebGLRenderer();
        renderer.setPixelRatio(window.devicePixelRatio);
        renderer.setSize(window.innerWidth, window.innerHeight);
        container.appendChild(renderer.domElement);
         
        document.addEventListener('mousedown', onDocumentMouseDown, false);
        document.addEventListener('mousemove', onDocumentMouseMove, false);
        document.addEventListener('mouseup', onDocumentMouseUp, false);
        document.addEventListener('wheel', onDocumentMouseWheel, false);
         
        document.addEventListener('dragover', function (event) {
         
        event.preventDefault();
        event.dataTransfer.dropEffect = 'copy';
         
        }, false);
         
        document.addEventListener('dragenter', function (event) {
         
        document.body.style.opacity = 0.5;
         
        }, false);
         
        document.addEventListener('dragleave', function (event) {
         
        document.body.style.opacity = 1;
         
        }, false);
         
        document.addEventListener('drop', function (event) {
         
        event.preventDefault();
         
        var reader = new FileReader();
        reader.addEventListener('load', function (event) {
         
        material.map.image.src = event.target.result;
        material.map.needsUpdate = true;
         
        }, false);
        reader.readAsDataURL(event.dataTransfer.files[0]);
         
        document.body.style.opacity = 1;
         
        }, false);
         
        window.addEventListener('resize', onWindowResize, false);
         
        }
         
        function onWindowResize() {
         
        camera.aspect = window.innerWidth / window.innerHeight;
        camera.updateProjectionMatrix();
         
        renderer.setSize(window.innerWidth, window.innerHeight);
         
        }
         
        function onDocumentMouseDown(event) {
         
        event.preventDefault();
         
        isUserInteracting = true;
         
        onMouseDownMouseX = event.clientX;
        onMouseDownMouseY = event.clientY;
         
        onMouseDownLon = lon;
        onMouseDownLat = lat;
         
        }
         
        function onDocumentMouseMove(event) {
         
        if (isUserInteracting === true) {
         
        lon = ( onMouseDownMouseX - event.clientX ) * 0.1 + onMouseDownLon;
        lat = ( event.clientY - onMouseDownMouseY ) * 0.1 + onMouseDownLat;
         
        }
         
        }
         
        function onDocumentMouseUp(event) {
         
        isUserInteracting = false;
         
        }
         
        function onDocumentMouseWheel(event) {
         
        var fov = camera.fov + event.deltaY * 0.05;
         
        camera.fov = THREE.Math.clamp(fov, 10, 75);
         
        camera.updateProjectionMatrix();
         
        }
         
        function animate() {
         
        requestAnimationFrame(animate);
        update();
         
        }
         
        function update() {
         
        if (isUserInteracting === false) {
         
        //lon += 0.1;
         
        }
         
        lat = Math.max(-85, Math.min(85, lat));
        phi = THREE.Math.degToRad(90 - lat);
        theta = THREE.Math.degToRad(lon);
         
        camera.target.x = 500 * Math.sin(phi) * Math.cos(theta);
        camera.target.y = 500 * Math.cos(phi);
        camera.target.z = 500 * Math.sin(phi) * Math.sin(theta);
         
        camera.lookAt(camera.target);
         
        renderer.render(scene, camera);
         
        }
         
        </script>
        </body>
        </html>

        sau đó Bạn chỉ cần chèn theo dạng iframe là có thể hiển thị trong nội dung của WordPress. Tham số là src là đường dẫn đến hình ảnh của bạn và title.

        <iframe src="http://domain.com/360.php?src=/images/anh360.jpg&title=Test+360"></iframe>

        Lý do phải thông qua iframe là vì hỉnh ảnh làm 360 độ sẽ hiển thị full màn hình, nó sẽ làm vỡ khung giao diện của bạn.

        Dùng plugin đăng hình ảnh 3D/VR lên WordPress

        iPanorama 360 WordPress Virtual Tour Builder

        iPanorama 360 là plugin WordPress cho phép bạn tạo các chuyến tham quan ảo tuyệt vời cho khách hàng từ trực tiếp bên trong quản trị viên WordPress chỉ trong vài giây. Plugin hỗ trợ các điểm đánh dấu để cung cấp thông tin về bất kỳ phần nào của cảnh hoặc để điều hướng đến các phòng khác

        WP VR – 360 Panorama and Virtual Tour Builder For WordPress

        Khi bạn có camera 360, bạn sẽ có thể quay video 360 độ căn hộ thật tuyệt vời. Sau khi bạn nhúng video 360 độ vào trang web của mình, khách truy cập của bạn có thể điều hướng trong video khi video phát. Bạn có thể tải nội dung video 360 lên Youtube, Vimeo hoặc trang web của mình, sau đó nhúng video vào bất kỳ trang nào trong trang web của mình bằng WPVR. Nhúng chuyến tham quan ảo chỉ trong vài cú nhấp chuột Sau khi bạn tạo chuyến tham quan, bạn thực sự dễ dàng nhúng chuyến tham quan đó vào trang web của mình.

        Panorama
        Một Plugin kích thước nhỏ giúp bạn, Dễ dàng hiển thị hình ảnh / video 360 độ toàn cảnh vào Trang web WordPress trong Bài đăng, Trang, Khu vực tiện ích bằng cách sử dụng Mã ngắn.

         

        Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

        Search Wpvn
        Nội dung

          Việc tận dụng dữ liệu có cấu trúc sẽ giúp các công cụ tìm kiếm như Google hiển thị các Đoạn trích phong phú về công thức giúp nội dung của bạn nổi bật trong SERPs (trang kết quả của công cụ tìm kiếm).

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Đánh dấu lược đồ công thức là gì?

          Đánh dấu lược đồ công thức là một loại Đánh dấu lược đồ cụ thể được thiết kế đặc biệt để chỉ ra và đến lượt nó, giúp các công cụ tìm kiếm hiển thị thông tin nhất định về công thức nấu ăn của bạn trong kết quả tìm kiếm.

          Kết quả của việc sử dụng tính năng này trên trang web của bạn là bạn có thể đủ điều kiện để kiếm các đoạn mã chi tiết trong kết quả tìm kiếm hiển thị thông tin bổ sung về công thức nấu ăn của bạn bao gồm xếp hạng, hình ảnh, tiêu đề, thời gian nấu ăn và hơn thế nữa.Tất cả đều đã được chứng minhlà làm tăng tỷ lệ nhấp chuột– có nghĩa là bạn thúc đẩy nhiều lưu lượng truy cập hơn vào trang web của mình.

          Lợi ích của việc thêm đánh dấu lược đồ

          Đánh dấu lược đồ & dữ liệu có cấu trúc là những đoạn mã giàu sức mạnh được hiển thị trên web cho một số lượng lớn các tìm kiếm – rất phổ biến đối với các tìm kiếm liên quan đến công thức nấu ăn.

          Các tính năng SERP đặc biệt này cũng thường có tỷ lệ nhấp cao hơn do chúng được làm nổi bật hơn nhiều trong tìm kiếm.

          Và giống như nhiều người trong ngành SEO làm, đây không hoàn toàn là một giả định – đây thực sự là theo chính Google và đã được hỗ trợ bởi một loạt các nghiên cứu điển hình, bao gồm cả nghiên cứu này từ Rakuten – một trong những công ty CNTT lớn nhất Nhật Bản đã thấy cải tiến từ việc triển khai dữ liệu có cấu trúc.

          Với sự trợ giúp của Rank Math, các trang web giống như của bạn có thể bắt đầu tận dụng nó ngay hôm nay để cải thiện tỷ lệ nhấp vào các bài đăng và trang của bạn.Và, đây thực sự chỉ là bước khởi đầu khi nói đến những gì có thể với dữ liệu có cấu trúc…

          Đánh dấu lược đồ và đoạn mã chính xác

          Nói một cách đơn giản,đánh dấu Schema(bởiSchema.org) là một từ vựng được chuẩn hóamà bạn có thể thêm vào HTML của trang web của mình đểgiúp các công cụ tìm kiếm hiểu nội dung của bạn là gìcó khả năngphản ánh điều đó trong SERPs (các trang kết quả của công cụ tìm kiếm).

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Và điều đó đưa chúng ta đến câu hỏi tiếp theo –là những gìGiàu Snippets?Đoạn mã chi tiết làcác tính năng SERPlà kết quả của việc các trang web tận dụng & đánh dấu các trang web bằng cách sử dụng dữ liệu có cấu trúc (Giản đồ, như được hiển thị ở trên).

          Cho đến nay, hơn 10 triệu trang web sử dụng Schema.org để đánh dấu các trang web của họ –ban đầu được thành lập bởi Google, Microsoft, Yahoo và Yandex– nỗ lực này hiện được dẫn dắt bởi một quy trình cộng đồng mở.

          Và, tóm lại –đoạn mã chi tiết là một trong những lợi ích đáng chú ý hơn của việc triển khai đánh dấu Lược đồ trên trang web của bạn vì chúng đã được chứng minh là thúc đẩy nhiều lưu lượng truy cập hơn đến các trang web

          Vì vậy, việc triển khai Schema có đáng giá không?Chúng tôi nghĩ rằng câu trả lời là khá rõ ràng –.

          Đánh dấu trang web của bạn theo cách cung cấp cho công cụ tìm kiếm khả năng hiểu thông tin về bạn, cách nó kết nối với công ty, sản phẩm của bạn và nội dung mang lại lợi ích cho mọi người liên quan.

          Một lợi ích khác – đặc biệt là về mặt chuẩn bị các trang web của bạn cho tương lai tìm kiếm – là việc sử dụng Schema làm cho cáctrang webcủa bạnđủ điều kiện được đưa vào kết quả tìm kiếm bằng giọng nói(bằng Alexa, Trợ lý Google, Siri, v.v.). Điều này đang gia tăng đặc biệt trong những năm gần đây và tôi chắc chắn rằng tất cả chúng ta đều muốn trang web của mình trở thành nguồn thông tin của Siri hoặc Alexa khi mọi người đặt câu hỏi trong ngành của chúng tôi vì chúng tôi đã sử dụng lược đồ Câu hỏi thường gặp chẳng hạn.

          Tóm lại, điều này không chỉ dẫn đến việc chủ sở hữu trang web kiếm được rich snippet mà còn giúp Google và các công cụ tìm kiếm khác cung cấp cho người dùng các kết quả tìm kiếm có liên quan hơn.

          Các loại giản đồ mặc định cho trang web

          Article Schema

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng
          Lược đồ bài viết

          Product Schema

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Lược đồ sản phẩm có thể được thêm vào các bài đăng thêm tên sản phẩm, mô tả, SKU, khoảng không quảng cáo và các chi tiết khác về sản phẩm, sau đó có thể được hiển thị trong SERPs.

          Recipe Schema

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng
          Lược đồ công thức trong Xếp hạng Toán học

          Events Schema

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Quảng cáo các sự kiện của bạn theo phong cách với hỗ trợ đoạn mã sự kiện trong Xếp hạng Toán học.Bạn có thể định cấu hình đoạn mã sự kiện với hơn mười lăm loại sự kiện có thể xếp hạng sự kiện của bạn trên nhiều từ khóa có liên quan.

          Xếp hạng Math cũng nắm bắt thông tin sự kiện bổ sung như URL địa điểm, URL bán vé, kho vé, v.v. Thông tin này có giá trị đối với khách hàng và cung cấp trải nghiệm khách hàng tuyệt vời.

          Video Schema

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Thổi luồng sinh khí mới vào video của bạn với sự hỗ trợ giản đồ video trong Xếp hạng Toán học.Các đoạn mã có thể được thêm vào chỉ trong một vài cú nhấp chuột và chúng đảm bảo rằng video của bạn xuất hiện dưới dạng một thẻ chi tiết trong SERPs.

          Local Business Schema

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Xếp hạng một doanh nghiệp địa phương trên các từ khóa được nhắm mục tiêu có thể có nghĩa là sự khác biệt giữa đêm và ngày đối với doanh nghiệp.Với sự hỗ trợ giản đồ doanh nghiệp địa phương trong Xếp hạng Toán học, doanh nghiệp địa phương của bạn có cơ hội xếp hạng cao hơn nhiều và nhận được nhiều lưu lượng truy cập hơn.

          FAQ Schema Block

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Dễ dàng thêm phần Câu hỏi thường gặp về lược đồ sẵn sàng và thân thiện với người dùng vào nội dung của bạn bằng cách sử dụng Khối lược đồ câu hỏi thường gặp được cung cấp.

          KhốiCâu hỏi thường gặpsẽgiúp Câu hỏi thường gặp của bạn xuất hiện trong SERPsvà cải thiện trải nghiệm người dùng của những người tìm kiếm đang tìm kiếm nội dung của bạn.

          HowTo Schema Block

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Khối lược đồ HowTo cung cấp cho bạn khả năng nổi bật so với phần còn lại của trang web trong các Trang kết quả của Công cụ Tìm kiếm.

          Tăng khả năng hiển thị và làm cho các trang của bạnđủ điều kiện cho các thiết bị thông minh hỗ trợ Voice Assistance.

           

          Theo dõi hiệu suất của các loại đánh dấu lược đồ trang web

          Bây giờ chúng ta hãy xem xét các công cụ bạn có trongGoogle Search Consoleđể theo dõi hiệu suất của Rich Snippets của bạn.

          Cách đầu tiên và phổ biến nhất để kiểm tra là sử dụng phầnCác tính năng nâng caovới các tab dành riêng cho nhiều loại dữ liệu có cấu trúc khác nhau.

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Tuy nhiên, điều này chỉ thực sự hiển thị cho bạn trang mà bạn đã thêm Đánh dấu lược đồ vào, nó không thực sự cung cấp cho bạn bất kỳ thông tin nào về cách trang này đang hoạt động (tức là số lần hiển thị và nhấp chuột).

          Vì vậy, để làm được điều đó, chúng tôi thực sự cần điều hướng đến báo cáoHiệu suất> Kết quả tìm kiếmtrong Google Search Console:

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Trong báo cáo này, bạn sẽ có thể thấy các số liệu khác nhau bao gồm Tổng số lần nhấp, Số lần hiển thị, CTR trung bình và Vị trí. Và nếu bạn cuộn xuống sâu hơn, bạn sẽ thấy một phần với các tab khác nhau:

          Rich Snippet Schema cung cấp thông tin cho các công cụ tìm kiếm và người dùng

          Nếu bạn điều hướng đến tab Giaodiện tìm kiếm, bạn sẽ thấy dữ liệu hiệu suất liên quan đến các trang có một số cải tiến nhất định – từ các trang AMP, kết quả Web Light (liên quan đến thiết bị di động), ví dụ:Video.

          Sau đó, nếu bạn nhấp vào bất kỳ mục báo cáo nào ở đó – bạn có thể đi sâu hơn để tập trung vào các chỉ số hiệu suất cụ thể của các trang có tính năng xuất hiện tìm kiếm cụ thể.Đây là một cách tuyệt vời để xem hiệu suất của bài đăng / trang đó đã thay đổi như thế nào theo thời gian…

          Nguồn: https://rankmath.com/blog/schema-markup/

          https://rankmath.com/blog/recipe-schema-wordpress/

           

          Triển khai E-learning Moodle với theme Fordson

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

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

            Fordson được thiết kế có mục đích để chuyển từ đăng nhập sang học nhanh nhất có thể. Cách chúng tôi tiếp cận việc triển khai Moodle là tập trung vào cách đi từ đăng nhập đến học nhanh nhất có thể… với ít phiền nhiễu nhất có thể. Đó là lý do tại sao chúng tôi thiết kế chủ đề Fordson và Plugin dễ dàng đăng ký để làm việc cùng nhau để xử lý quá trình này. Mục tiêu và mục đích của chúng tôi là một kế hoạch không bị phân tâm và được suy nghĩ kỹ lưỡng về cách người dùng sẽ điều hướng và khám phá tài liệu học tập
            tham khảo: https://michiganmoodle.dearbornschools.org/fordson-theme-for-moodle/

            Đăng nhập vào wordpress và mở moodle

            Cách 1: Quy trình một chiều đăng nhập vào wordpress và mở moodle, tùy chọn đăng ký vào các khóa học, nhóm thuần tập,…

            https://github.com/frumbert/wp2moodle

            WordPress to Moodle (wp2moodle) là một plugin cho phép người dùng trong WordPress mở các khóa học Moodle mà không cần hộp đăng nhập ở giữa. Nó cũng sẽ (tùy chọn) đăng ký người dùng vào các nhóm, khóa học và nhóm.

            Nó sử dụng một liên kết được mã hóa và không dựa trên SSL / https (mặc dù bạn nên sử dụng SSL nếu có thể). Máy chủ WordPress và Moodle của bạn có thể nằm trên cùng một máy chủ hoặc có thể trên các mạng hoặc công nghệ máy chủ khác nhau. Vì nó chỉ sử dụng siêu liên kết để giao tiếp nên không có thiết lập đặc biệt nào.

            Plugin có những hạn chế này theo thiết kế:

            Người dùng đã tạo thông qua plugin này không thể đăng nhập vào Moodle bằng tên người dùng WordPress của họ – họ phải đăng nhập từ liên kết mà plugin này tạo.
            Bạn không thể đi ngược lại; tức là đăng nhập vào Moodle và đăng nhập lại vào WordPress (sử dụng những người dùng đó – các plugin xác thực khác vẫn hoạt động)
            WordPress không được thông báo về bất kỳ kết quả khóa học nào
            WordPress không được thông báo về bất kỳ thay đổi nào đối với hồ sơ người dùng do Moodle thực hiện (mặc dù plugin thường vô hiệu hóa mật khẩu)
            WordPress không có cách nào để biết liệu các giá trị được liên kết có tồn tại trong Moodle hay không (ví dụ: nó không kiểm tra công việc của bạn)
            Dữ liệu được mã hóa (sử dụng aes-256-cbc thông qua openssl) ở đầu WordPress và chuyển giao một yêu cầu http GET tiêu chuẩn. Chỉ thông tin bắt buộc tối thiểu mới được gửi để tạo hồ sơ người dùng Moodle. Người dùng được tạo tự động nếu không có mặt ở cuối Moodle, sau đó được xác thực và (tùy chọn) được đăng ký trong Nhóm thuần tập, Nhóm hoặc cả hai.

            Làm thế nào nó hoạt động
            Plugin này cho phép bạn đặt shortcode trong một bài đăng chuyển thông tin đăng nhập được mã hóa đến Moodle (yêu cầu plugin này cũng phải được cài đặt vào Moodle). Người dùng sẽ được thêm vào Moodle và được đăng ký tùy chọn vào (các) Nhóm thuần tập, (các) Khóa học và / hoặc (các) Nhóm được chỉ định.

            Sử dụng nút Moodle trên trình chỉnh sửa phong phú để chèn mã ngắn hoặc nhập chi tiết theo cách thủ công bằng cách sử dụng các ví dụ bên dưới làm hướng dẫn.

            Cách 2: Plugin xác thực này cho phép Moodle xác thực dựa trên cài đặt WordPress.

            Bạn sẽ cần cài đặt và kích hoạt máy chủ WP REST API OAuth 1.0a trong WordPress – xemhttps://github.com/WP-API/OAuth1.

            Quá trình cơ bản là:
            1. Một người dùng WordPress đã đăng nhập vào WordPress nhấp vào một liên kết đến Moodle. Lưu ý rằng nếu người dùng chưa đăng nhập vào WordPress thì quá trình ủy quyền sẽ yêu cầu họ.
            2. Moodle chuyển hướng người dùng trở lại WordPress (thông qua Oauth 1.0a) và WordPress hỏi người dùng xem họ có muốn chia sẻ thông tin chi tiết về WordPress của họ với Moodle hay không.
            3. Nếu người dùng chấp nhận, họ sẽ được chuyển hướng trở lại Moodle và xác thực Moodle.

            Dùng Rank Math cài API thu thập thông tin trang web ngay lập tức

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

              Đưa nội dung của bạn được lập chỉ mục trên các công cụ tìm kiếm như Google và Bing là bước đầu tiên để thúc đẩy lưu lượng truy cập không phải trả tiền từ các công cụ tìm kiếm.
              Trong bài đăng này, chúng ta sẽ xem xét cách bạn có thể sử dụng API lập chỉ mục mới của Google để thu thập dữ liệu các trang và nội dung trên trang web của bạn ngay lập tức thay vì phải chờ đợi! Như các bạn đã biết các phương pháp index Google cũ bạn hay làm:

              Submit từng bài trong Google Search Console

              Cách này hiệu quả, nhưng tốn thời gian submit và chỉ làm thủ công với từng bài viết một. Nếu số lượng bài viết lớn, bạn sẽ tốn rất nhiều thời gian và thậm chí còn để sót nữa.

              Theo như nghiên cứu của HubSpot – Nếu bạn không gửi URL mới cho Google thông qua Sitemap thì Google phải mất trung bình 1375 phút để thu thập dữ liệu trang (tương đương 23 tiếng). Tuy nhiên, khi Update Sitemap tới Google Search Console, con số này giảm xuống chỉ còn 14 phút. Thế nên thay vì để Google tự rà soát nội dung mới. Bạn có thể thông báo cho Google theo cách thủ công để tiết kiệm thời gian hơn.

              Submit sitemap trong Google Search Console.

              Bản chất sitemap là bản đồ hay còn gọi là sơ đồ website của bạn “XML”. Sơ đồ này giúp Google nhận biết và dễ craw các nội dung quan trọng do bạn đề xuất. Khi bạn gửi một Sitemap được Updated tới Search Console và bao gồm các URL mới. Có nghĩ là: Bạn đang thông báo cho Google rằng đã có sự thay đổi và các trang này sẽ được Crawl. Submit sitemap không đảm bảo Google sẽ index bài viết của bạn. Vì sitemap chỉ giúp Google biết thời điểm (when) bạn thay đổi nội dung, chứ không phải nội dung (what) bạn thay đổi.

              Sử dụng tool index thứ 3

              Cách làm này mình thấy cũng khá nhiều và rất nhiều bạn hỏi về các tool như (LarIndex, EliteLinkIndexer, Colinkri…). Tỉ lệ index của các công cụ này lúc trước cũng khá là cao nhưng ngày càng giảm do Google siết chặt. Về cách làm này thường tốn chi phí, và bạn thường không biết cách công cụ push Googlebot như thế nào (một số công cụ spam link của bạn để index), dễ gây ảnh hưởng xấu.

              Tại sao nên Submit URL Google
              Lí do sau đây để giải thích vì sao bạn vẫn nên Submit URL Google thủ công mặc dù không phải lúc nào cũng cần làm vậy. Cẩn thận ngay từ ban đầu vẫn hơn là hối tiếc về sau.

              Google vẫn có thể sẽ có thể tìm thấy trang Web bạn cả khi bạn không Submit URL Google. Nhưng tôi nghĩ vẫn nên làm. Việc này chỉ mất có 1, 2 phút gì thôi.
              Google không thể khám phá mọi thứ thông qua thu thập thông tin. Nếu bạn gửi trang Web của mình qua Google Search Console, bạn sẽ có cơ hội cung cấp Google thêm một vài thông tin hữu ích khác về trang Web mình. Đây là những thông tin mà các con bọ có thể không tiếp cận được.
              Submit URL Google sẽ giúp cải thiện trang Web của bạn. Nó sẽ thường xuyên thông báo tình trạng Website thông qua Công cụ Quản trị Trang. Nếu có vấn đề/ lỗi xảy ra trên trang Web, bạn sẽ dễ dàng sửa lỗi hơn.
              Đừng hối hận vì đã không làm gì khi Google không Index bài viết, Submit URL Google lại thôi! Nếu bạn đã Ping/Submit URL Google rồi, thì thi thoảng vẫn có thể Submit URL Google lại lần nữa nếu:

              Khi bạn thay đổi/cập nhật một trang bất kỳ và muốn thông báo đến các công cụ tìm kiếm. Các công cụ tìm kiếm không thể thu thập lại toàn bộ Web trong một ngày. Do đó rất có thể trang nội dung của bạn sẽ không được Google Index.
              Sau khi sửa lỗi trên trang Web xong. Đôi khi sẽ gửi thông báo cho bạn các lỗi thu thập dữ liệu hoặc lỗi 404 trong Search Console. Lúc này bạn nên Submit Link của Website để Google thu thập lại thông tin sau khi sửa lỗi xong.
              Khi nào cần Submit Website?
              Thông thường nhất, bạn chỉ cần gửi Website của mình cho Google khi khởi chạy Website lần đầu tiên (vì Google không biết rằng nó tồn tại). Hoặc khi di chuyển Website sang một miền mới.

              Nếu Website đã được Index thì bạn không cần phải Submit toàn trang. Tuy nhiên, có những trường hợp có thể cần phải làm như vậy do lỗi. Giả sử một nhà phát triển đã vô tình thêm thẻ rel = “noindex” trên trang Web và bạn thấy trang Web giảm khỏi chỉ mục.

              Seo Before
              Seo After

              Những lý do nên index website bằng Google API

              • Xếp hạng nhanh hơn (đặc biệt quan trọng đối với nội dung nhạy cảm về thời gian)
              • Tăng cơ hội xếp hạng trên đối thủ cạnh tranh của bạn
              • Luôn cập nhật kết quả tìm kiếm để có lưu lượng người dùng chất lượng cao hơn

              Nhờ có API lập chỉ mục của Google, Xếp hạng toán học SEO cho WordPress và hướng dẫn này mà chúng tôi đã tổng hợp cho bạn, giờ đây bạn có thể giúp trang web của mình xếp hạng nhanh hơn .

              Sử dụng phương pháp này, bạn có thể đi trước đối thủ một bước bằng cách đảm bảo rằng trang web của bạn được thu thập thông tin và có cơ hội xếp hạng trước khi trang web của họ đạt được, điều này cực kỳ quan trọng khi nói đến nội dung cạnh tranh, nhạy cảm về thời gian.

              Quá trình thiết lập này thường không dễ dàng lắm, nhưng nếu bạn làm theo hướng dẫn từng bước này , bạn sẽ thiết lập và chạy (hoặc, tôi đoán bạn có thể nói lên và xếp hạng) ngay lập tức!

              Theo khuyến nghị của Google, bạn không nên sử dụng API lập chỉ mục này trên các trang web kiếm tiền

              6 bước để Google Index API cho website của bạn.

              Bước 1: Tạo tài khoản Google Cloud

              Phần này để tránh mất thời gian thì bạn tự tìm hiểu về cách Tạo tài khoản Google Cloud trên google nhé. Họ hướng dẫn nhiều rồi.

              Bước 2: Tạo Project Google Cloud

              Đi tới Bảng điều khiểnAPI của Googlevà tạo một dự án mới.Nhớ ấn “Continue” nhé.

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Nếu sau khi nhấp vàoContinue, bạn thấy màn hình sau, thì bạn đã tạo thành công dự án:

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Xin lưu ý: Không cần phải nhấp vào nút ‘Go to Credentials’. Bạn có thể đóng tab này.

              Bước 2: Tạo tài khoản dịch vụ

              Khi bạn đã tạo dự án của mình, hãy tạotài khoản dịch vụbằng cách mở trang tài khoản dịch vụ. Trước tiên, bạn sẽ được nhắc chọn dự án API mà bạn muốn tạo tài khoản dịch vụ này (dự án đã tạo ở bước 1).

              Bạn vào đường linkTẠI ĐÂY.Sau đó, bạn chọn dự án mới khởi tạo.

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Bạn chọn vàoMy Projecrồi bạn chọnCreate Service Account.

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Trên màn hình tạo tài khoản dịch vụ, hãy nhập tên và mô tả cho tài khoản dịch vụ mới được tạo. Bạn đặt tên cho Service. Đơn giản nhất là bạn điền tên miền trang webcủa mình cho dễ nhớ nhé. Ví dụ như ở đây mình tạo là: gi-api-service-account, hoặc bạn có thể để tên gì cho dễ là được.

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Chọn và sao chép toàn bộ ID tài khoản dịch vụ ( ID trông giống như địa chỉ email) vì bạn sẽ cần nó sau này.Sau đó, nhấp vào nútCreate and Continue

              Phần Grant this service account access to project (optional), các bạn chọnOWNER.Phần Grant users access to this service account (optional), bạn chọnDONE.

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Bước 3: Tạo API Key (JSON)

              Khi bạn đã đặt vai trò thành Chủ sở hữu như được hiển thị ở trên, chỉ cần nhấp vào Service accounts mới tạo. Sau đó, bạn chuyển qua tab KEY. Bạn chọn nút ADD KEY, nhấn Create new key, chọn mã JSON.

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Khi nhấp vàoCreate, tệp .json sẽ tự động được tải xuống trong trình duyệt của bạn có nghĩa là bạn đã tạo thành công khóa API và có thể tiến hành bước tiếp theo…

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Bước 4: Cấp quyền quản trị cho Google index API

              Để thực hiện việc này, bạn sẽ cần đăng ký và xác minh trang web của mình bằng Google Search Console (nếu bạn chưa làm như vậy), điều này rất dễ dàng: chỉ cần làm theocác bước được đề xuất để xác minh quyền sở hữu sản phẩm của bạn.

              Sau khi xác minh sản phẩm của bạn, hãy mởGoogle Search Console,chọn sản phẩm của bạn ở bên trái (nếu được nhắc), sau đó nhấp vàoCài đặtở gần cuối:

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Nhấp vàoNgười dùng và Quyền:

              Nhấp vào dấu ba chấm bên cạnh tài khoản của bạn, sau đó nhấp vàoQuản lý chủ sở hữu tài sản:

              Một trang sẽ mở ra trong một tab mới. Cuộn xuống dưới cùng và nhấp vào nútThêm chủ sở hữutrong phầnChủ sở hữu đã xác minh:

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              NhậpID tài khoản dịch vụ(IDmà bạn đã sao chép trước đó ở bước 2) vào trườngđịa chỉ email của chủ sở hữu mớivà nhấp vàoTiếp tục:

              Chuyển về tab trước và làm mới nó. Bây giờ bạn sẽ thấy tài khoản Dịch vụ được liệt kê là Chủ sở hữu mới.

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Bạn có thể sử dụng mộtDự án,Tài khoản Dịch vụKhóa API JSONtrên nhiều trang web, chỉ cần đảm bảo rằng Tài khoản Dịch vụ được thêm làm Chủ sở hữu cho tất cả các trang web trong Search Console.

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Bước 5: Cấu hình instant indexing trong Plugin Rank Math

              Download plugin Fast Indexing API của Rank MathTẠI ĐÂY.

              Sau khi cài đặt xong, bạn vào Rank Math >> Instant Indexing, bạn copy nội dung mã JSON (xem lại bước 3) vào phần Google JSON Key. Chọn Loại bài đăng mà bạn muốn API lập chỉ mục ping Google để thu thập dữ liệu trang web của bạn ngay sau khi bài đăng được xuất bản, cập nhật hoặc bị xóa và nhấp vàoLưu thay đổi.

              Dùng Rank Math cài API Google thu thập thông tin trang web ngay lập tức

              Sau đó ở phần Submit Post Types to Google, bạn chọn những loại định dạng mà bạn muốn submit. Bạn nên chọn Posts / Pages, và một số định dạng quan trọng theo mục tiêu của bạn.

              Bước 6: Sử dụng plugin để index website bằng Google API

              Để sử dụng Google Index API, bạn có hai cách:

              Cách 1:

              Dán danh sách bài viết trong Rank Math / Instant Indexing. Các bạn chọn Rank Math / Instant Indexing. Sau đó, bạn dán danh sách các bài viết muốn index (mỗi dòng một URL), và chọn Google: Publish/update URL, nhấn Send API. Thế là đã index website bằng Google API quá nguy hiểm luôn rồi đúng không nào.

              Nhập một URL (hoặc nhiều hơn) vào phần Lập chỉ mục tức thì và chọn Hành động với tư cách là Google: Xuất bản / cập nhật URL . Sau đó, nhấp vào nút Gửi tới API .
              Lưu bản nháp tự động
              Chỉ trong một giây, bạn sẽ thấy phản hồi từ API, tương tự như bên dưới.
              Lưu bản nháp tự động
              Bạn có thể sử dụng các hành độngXóa URLhoặcNhận Trạng thái URL, để xóa URL khỏi chỉ mục hoặc lấy trạng thái hiện tại của URL.

              Cách 2.

              Thay vì nhập các URL ở đây và sau đó lập chỉ mục chúng, bạn cũng có thể sử dụng trực tiếp trên danh sách bài viết để index website bằng Google API. Các bạn vào danh sách các bài viết POST / PAGE. Sau đó, bạn chọn Instant Indexing: Google Update.
              Bạn cũng có thể sử dụng các tùy chọn hành động hàng loạt để nhanh chóng lập chỉ mục hoặc cập nhật nhiều bài đăng.
              Lưu bản nháp tự động

              Chúng tôi hy vọng rằng bạn có thể sử dụng hiệu quả hướng dẫn này để giúp bạn bắt đầu và chạy vớiAPIlập chỉ mụccủa Google
              Nguồn: rankmath.com/blog/google-indexing-api/

              Nhận Khóa API của bạn từ Công cụ quản trị trang web Bing

              Bước 1: Truy cậpCông cụ quản trị trang web Bing

              Nhập thông tin đăng nhập của bạn nếu bạn chưa đăng nhập. Sử dụng cùng chi tiết tài khoản bạn đã sử dụng đểxác minh trang web của mình trên Bing. Nếu trang web của bạn chưa được xác minh, bạn cũng có thể thực hiện việc đó bằng cách sử dụng Xếp hạng Toán bằng cách nhập mã xác minh Bing của bạn tạiWordPress Dashboard > Rank Math > General Settings > Webmaster Tools.

              Bước 2: Xác định vị trí biểu tượng “Bánh răng” ở trên cùng bên phải

              Nhấp vào biểu tượng bánh răng và sau đó nhấp vào tùy chọn “Quyền truy cập API”.

              Dùng Rank Math cài API thu thập thông tin trang web ngay lập tức

              Bước 3: Chọn Tùy chọn khóa API

              Vì đối với thiết lập cụ thể này, chúng tôi sẽ sử dụngKhóa API thayvì (Xác thực OAuth), hãy chọn tùy chọn được đánh dấu bên dưới:

              Dùng Rank Math cài API thu thập thông tin trang web ngay lập tức

              Bước 4:Tạo khóa API Bing của bạn

              Bây giờ, để tạo khóa API của bạn – chỉ cần nhấp vào nútTạo khóa API.

              Dùng Rank Math cài API thu thập thông tin trang web ngay lập tức

              Bước 5: Sao chép khóa API đã tạo

              Chỉ cần sao chép khóa API đã tạo như được hiển thị bên dưới để bạn có thể dễ dàng thêm nó vào cài đặt Lập chỉ mục tức thì của Rank Math.

              Dùng Rank Math cài API thu thập thông tin trang web ngay lập tức

              Thêm khóa API của bạn để xếp hạng cài đặt lập chỉ mục tức thì của Math

              Quay lại cài đặt SEO Xếp hạng Toán học và chuyển đến phần Lập chỉ mục tức thì. Chỉ cần nhập khóa API mà bạn đã sao chép từ Công cụ quản trị trang web của Bing ở bước trước.

              Đảm bảo chọn loại nội dung (Bài đăng, Trang, Phương tiện hoặc CPTs) mà bạn muốn được gửi tự động.

              Dùng Rank Math cài API thu thập thông tin trang web ngay lập tức

              Đó là nó!Bây giờ bạn đã thiết lập thành công API lập chỉ mục tức thì với Bing và mỗi khi bạn xuất bản bài đăng mới hoặc cập nhật bài đăng hiện có, Rank Math SEO sẽ tự động gửi URL đến Bing dựa trên cài đặt bạn đã chọn.

              Dùng Rank Math cài API thu thập thông tin trang web ngay lập tức

              Lưu ý: Hạn ngạch bạn thấy trong phần Lập chỉ mục tức thì phụ thuộc vào độ tuổi của trang web của bạn. Nó có thể dao động từ 10 lần gửi mỗi ngày cho các trang web mới hoặc 10.000 cho những trang web khá lâu đời.

              Hạn ngạch đặt lại sau mỗi 24 giờ.

              Nguồn: rankmath.com/blog/bing-indexing-api/

              Thêm font chữ vào và tái sử dụng bộ mã icons theme flatsome

              Thêm font chữ vào theme flatsome
              Nội dung

                Flatsome mặc định sử dụng font chữ của Google Font, nghĩa là mỗi lần người dùng truy cập vào website của bạn, font sẽ được tải tự động từ Google Font. Nếu số người dùng vào website của bạn ít thì điều này không có ảnh hưởng gì. Nhưng lượng người dùng lớn cùng truy cập vào website và tự động load font từ Google Font, sẽ gây quá tải cho hosting/vps/server của bạn.

                Hơn thế nữa, việc tải font từ Google Font làm website của bạn chạy chậm hơn, đặc biệt là những lúc đứt cáp quang biển, thì website của bạn còn chậm hơn nữa.

                Điều này làm cho khách hàng của bạn khi vào website có trải nghiệm không tốt, và sẽ không bao giờ quay lại website của bạn nữa.

                Vì thế, chúng ta phải giải quyết vấn đề tự động load font từ Google Font, bằng cách up font chữ lên hosting/vps/server của bạn. Nếu hosting của bạn sử dụng ổ cứng SSD thì việc load font còn nhanh hơn nữa.

                Sau khi đã hiểu rõ vấn đề, chúng ta cùng bắt đầu nhé!

                Bước 1: Tắt tính năng sử dụng Google Font trong theme flatsome
                Bạn vào Giao diện -> Tùy biến -> Style -> Typography

                Tại đây, bạn tìm các ô Font Family và Variant và chỉnh lại giá trị như ảnh dưới

                Font Family : Sans Serif

                Variant : Normal 400

                tìm và thay toàn bộ nhé các bạn

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

                 

                Sau đó, các bạn bấmĐăngđể lưu lại.

                Vẫn tại giao diện đó, bạn tiếp tục tick vào ô “Disable Google Fonts. No fonts will be loaded from Google.” Và bấmĐăngđể lưu lại.

                Thêm font chữ vào theme flatsome

                Bước 2: Thêm font chữ mới vào hosting

                Ở đây, mình có 2 font chữ : utm-avo và utm-avo-bold

                Thêm font chữ vào theme flatsome

                mình sẽ up nguyên thư mục (folder) font lên hosting, theo đường dẫn:

                wpfast.vn/wp-content/themes/wpfast/assets/font/utm-avo.ttf

                wpfast.vn/wp-content/themes/wpfast/assets/font/utm-avo-bold.ttf

                wpfastlà folder theme đang được sử dụng (đang kích hoạt)
                Thêm font chữ vào theme flatsome

                font được up vào folder assets của theme đang được kích hoạtSau khi up font lên hosting thành công, bạn hãy kiểm tra lại đường dẫn tới font đã chính xác chưa, trước khi tiếp tục bước tiếp theo.

                Bước 3: Thay đổi font chữ mặc định của theme flatsome bằng font chữ mới

                Để áp dụng font chữ mới thay thế font mặc định flatsome, tại thanhadmin menu bar– bạn vào đường dẫn sau:Flatsome->Advanced->Custom CSS

                Thêm font chữ vào theme flatsome

                Tại ô Custom CSS (ALL SCREENS)

                Thêm font chữ vào theme flatsome

                Bạn past đoạn mã sau vào ôALL SCREENS

                @font-face{font-family:”utm-avo”;
                font-weight:normal;
                font-style:normal;
                src:url(“/wp-content/themes/wpfast/assets/font/utm-avo.ttf”) format(“truetype”);
                font-display:swap
                }
                @font-face{font-family:”utm-avo-bold”;
                font-weight:normal;
                font-style:normal;
                src:url(“/wp-content/themes/wpfast/assets/font/utm-avo-bold.ttf”) format(“truetype”);
                font-display:swap
                }
                .nav>li>a,
                h1,
                h2,
                h3,
                h4,
                h5,
                h6 {
                font-family:’utm-avo’,
                sans-serif
                }
                p,
                a,
                span,
                strong,
                button,
                li {
                font-family:’utm-avo’,
                sans-serif
                }

                Thêm font chữ vào theme flatsome

                Và bấmSave All Changesđể lưu lại nhé!

                LƯU Ý: ở dòng

                src:url(“/wp-content/themes/wpfast/assets/font/utm-avo.ttf”) format(“truetype”);

                Các bạn cần thay thế bằng đường dẫn tới file font đã up lên ở bước 2 nhé!
                Vậy là chúng ta đã hoàn tất việc thay font cho theme flatsome rồi. Bây giờ bạn quay lại trang chủ, nhấn f5 để xem thành quả nhé!

                (Có 1 số trường hợp vẫn không thấy font mới được áp dụng, bạn hãy chắc chắn rằng đường dẫn tới file font mới hoàn toàn chính xác, hoặc xóa cache trình duyệt nhé!)

                Chỉ với 3 bước đơn giản, bạn đã có thể thay đổi font chữ cho theme flatsome mà không cần phải dùng plugin. Việc này giúp website của bạn có tốc độ tải trang nhanh hơn, ít tốn tài nguyên hệ thống hơn, trang admin ít plugin sẽ nhẹ nhàng hơn.

                Sử dụng bộ icon mặc định của Flatsome

                các icon được tích hợp sẵn trong theme Flatsome, bạn có thể sử dụng ngay mà không cần cài đặt thêm bộ icons từ bên thứ 3. Mặc dù có đôi chút hạn chế, tuy nhiên, mình tin là bộFlatsome iconsnày sẽ thỏa mãn tốt nhu cầu khi bạn đang không cần quá nhiều icon

                Để hiển thị bộ icon của Flatsome, các bạn có thể sử dụng thẻihoặc thẻspantrong html vớiclasscủa icon để hiển thị icon mà bạn muốn.

                <i class="icon-chat"> icon chat</i>
                <span class="icon-chat" style="font-family:fl-icons;"> icon chat</span>

                Đây là kết quả hiển thị: icon chat icon chat

                Bộ mã Flatsome icons được tích hợp sẵn trong theme

                icon-lock
                icon-line

                icon-chat
                icon-user
                icon-shopping-cart
                icon-tumblr
                icon-gift
                icon-phone
                icon-play
                icon-menu
                icon-shopping-basket

                icon-shopping-bag
                icon-google-plus
                icon-heart-o
                icon-heart
                icon-500px
                icon-vk
                icon-angle-left
                icon-angle-right
                icon-angle-up
                icon-angle-down
                icon-twitter

                icon-envelop
                icon-tag
                icon-star
                icon-star-o
                icon-facebook
                icon-feed
                icon-checkmark
                icon-plus
                icon-instagram
                icon-pinterest
                icon-search

                icon-skype
                icon-dribbble
                icon-certificate
                icon-expand
                icon-linkedin
                icon-map-pin-fill
                icon-pen-alt-fill
                icon-youtube
                icon-flickr
                icon-clock
                icon-snapchat

                Truyền tiêu đề trang vào contact form 7

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

                  Một số bạn không muốn sử dụng thanh toán của woocommerce, mà sẽ sử dụng contact form 7 để thu thập dữ liệu khách hàng từ đó khai thác qua các kênh như FB, và google ads hoặc telesale. Vậy để biết khách hàng điền form và có nhu cầu mua sản phẩm nào thì chúng ta sẽ làm như thế nào? Hôm nay mình sẽ chia sẻ một đoạn script nho nhỏ để có thể làm được việc này.

                  Tạo 1 form mua hàng tùy chỉnh bằng contact form 7

                  copy code dán vào CF7, ID title_product là bắt buộc.

                  [text* text-70 placeholder "Tên"]
                  [tel* tel-923 placeholder "Số điện thoại"]
                  [text text-70 id:title_product placeholder]
                  [submit "Mua hàng"]

                  Kế tiếp hook cái form này vào trang sản phẩm.

                  add_action('woocommerce_after_add_to_cart_button','btn_muahang_cf7');
                  function btn_muahang_cf7(){
                      echo '<a href="#muangaycf7" class="btn-pttuan-custom">Mua ngay CF7</a>';
                      echo do_shortcode('
                  
                  ');
                  }
                  thêm 1 chút CSS
                  .btn-pttuan-custom{
                     display: block;
                      padding: 8px 10px;
                      background: red;
                      color: #fff;
                      text-align: center;
                  }

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

                  Một button mua ngay trong woocommerceKhi click vào button đó thì nó sẽ hiển thị lightbox như thế này:
                  Lưu bản nháp tự động

                  Form mua hàng bằng CF7

                  Xong phần form kế đến để nó có thể nhận được title sản phẩm thì các bạn thêm đoạn code này.
                  add_action('wp_footer','js_add_title_pttuan');
                  function js_add_title_pttuan(){
                  if(is_product()){;?>
                      <script>
                          jQuery(document).ready(function($){
                              $('.product-info .btn-pttuan-custom').click(function (){
                                  var title = $('h1').text();
                                  $('#title_product').val(title);
                              });
                          });
                      </script>
                  <?php };
                  }

                  kết quả khi chúng ta click vào thẻ a chúng ta vừa tạo:
                  Lưu bản nháp tự động

                  Thêm title vào form thành công
                  Bây giờ nếu các bạn muốn sử dụng nút này ở trang cửa hàng, hay trang chủ

                  Đầu tiên mình sẽ cho nó hiển thị ra trang chủ, trang cửa hàng, chúng ta vẫn sử dụng đoạn code tạo nút kia nhé, chỉ thay đổi hook của nó thôi. Mình sẽ sử dụng hook của woocommerce

                  add_action('woocommerce_after_shop_loop_item','btn_muahang_cf7');

                  Truyền tiêu đề trang vào contact form 7

                  Và thêm đoạn function

                  add_action('wp_footer','js_add_title_pttuan_shop');
                  function js_add_title_pttuan_shop(){
                  if(!is_product()){;?>
                      <script>
                          jQuery(document).ready(function($){
                              $('.product-small.col .btn-pttuan-custom').click(function (){
                                  var title = $(this).parents('.product-small').find('.woocommerce-LoopProduct-link').text();
                                  $('#title_product').val(title);
                              });
                          });
                      </script>
                  <?php };
                  }

                  kết quả là
                  Truyền tiêu đề trang vào contact form 7

                  Lấy title sản phẩm

                  #title_product{display:none} 

                  CSS cho Contact Form 7 đẹp hơn, gọn gàng hơn

                  sử dụng các đoạn CSS dưới đây để tùy chỉnh Contact Form 7 trên website

                  CSS background và border

                  .wpcf7 {
                       background: #A3A3A3;
                       border: 1 px solid #494949 ;
                       text-align: left;
                       width: 700 px; //%
                  }

                  CSS canh lề cho CF7

                  .wpcf7 form{ 
                       margin-left: 25px;
                       margin-right: 25px;
                       margin-top: 25px;
                  }

                  CSS các trường thông tin nhập vào

                  .wpcf7 input[type = "text"],
                  .wpcf7 input[type = "email"],
                  .wpcf7 input[type = "tel"],
                  textarea
                  {
                      font-size: 16px;
                      background: #f5f5f5 ;
                      <span class="pl-c1">border</span>: <span class="pl-c1">1<span class="pl-smi">px</span></span> solid <span class="pl-pds"><span class="pl-kos">#</span>e4e4e4</span>;
                      color: #000 ;
                      width: 95%;
                      padding: 2%;
                  }
                  .wpcf7-text:focus, .wpcf7-textarea:focus {
                      border-color: #129FEA;
                  }

                  CSS cho nút call-to-action của form

                  Input – Trạng thái của nút ‘nguyên trạng’ trước khi thực hiện bất kỳ hành động nào trên đó.
                  Input: hover – Trạng thái của nút khi con trỏ được di chuột qua đầu con trỏ.
                  input: active – Trạng thái của nút khi ai đó nhấp vào nút đó.

                  /*Label Font*/.wpcf7-form p {
                      font-size: 14px;
                      font-family: 'Roboto', sans-serif;
                  }
                   
                  /*Submit button Font*/.wpcf7-submit {
                      width: 100%;
                      font-size: 15px !important;
                      background: #4a97c2 !important;
                      color: #fff !important;
                  }
                  /*Submit button Hover*/.wpcf7-submit:hover {
                      background: #3b86b0 !important;
                  }
                  / * Button submit Contact Form 7 
                  ------------------------------- * /
                   
                  .wpcf7 input[type = "submit"] {
                      color: #ffffff;
                      font-size: 18 px;
                      font-weight: 700;
                      background: #9ED9330;
                      padding: 15px 25px 15px 25px;
                      border: none;
                      border-radius: 5px;
                      width: auto;
                      text-decoration: none;
                      text-transform: uppercase;
                  }
                   
                  .wpcf7 input:hover[type = "submit"] {
                      background: #494949;
                      transition: all 0,4s ease 0s;
                  }
                   
                  .wpcf7 input:active[type = "submit"] {
                      background: #000000;
                  }

                  CSS thông báo

                  /*Response messages - Error & Success*/.wpcf7-response-output {
                      margin-bottom: 30px !important;
                  }

                  Ví dụ css tất cả

                   /*Form width*/.wpcf7 {
                      text-align: left;
                      width: 40%;
                  }
                   
                  /*Input Field widths*/.wpcf7-text, .wpcf7-textarea {
                      width: 100%;
                      border: 1px solid #e4e4e4;
                      background: #f7f7f7;
                  }
                   
                  .wpcf7-text:focus, .wpcf7-textarea:focus {
                      border-color: #129FEA;
                  }
                   
                  /*Label Font*/.wpcf7-form p {
                      font-size: 14px;
                      font-family: 'Roboto', sans-serif;
                  }
                   
                  /*Submit button Font*/.wpcf7-submit {
                      width: 100%;
                      font-size: 15px !important;
                      background: #4a97c2 !important;
                      color: #fff !important;
                  }
                   
                  /*Submit button Hover*/.wpcf7-submit:hover {
                      background: #3b86b0 !important;
                  }
                   
                  /*Response messages - Error & Success*/.wpcf7-response-output {
                      margin-bottom: 30px !important;
                  }
                   
                  /***********borders************/ 
                  /*Form border*/.wpcf7 {
                      border: 1px solid #B7B7B7;
                      padding: 20px 25px !important;
                      padding-bottom: 0px !important;
                  }
                   
                  /*Input Field borders*/.wpcf7-text:focus, .wpcf7-textarea:focus {
                      border-color: #8F8F8F !important;
                  }
                   
                  /*Submit button Background*/.wpcf7-submit {
                      background: #7E7E7E !important;
                      color: #fff !important;
                  }
                   
                  /*Submit button Hover*/.wpcf7-submit:hover {
                      background: #5F5F5F !important;
                  }
                   
                  /***********colors************/ 
                  /*Submit button background & border*/.wpcf7-submit {
                      background-color: transparent !important;
                      border: 2px solid #5A5050 !important;
                      color: #5A5050 !important;
                      font-weight: bold !important;
                  }
                   
                  /*Submit button Hover styles*/.wpcf7-submit:hover {
                      background-color: transparent !important;    
                  border-color: #4CAF50 !important;
                  color: #4CAF50 !important;
                  }
                   
                  /*Label Text color*/.wpcf7-form p {
                      color: #9E9E9E;
                  }
                   
                  /*Input Field Text color*/.wpcf7-text, .wpcf7-textarea {
                  color: #777;
                  }
                   
                  /****background-images********/ 
                  /*Form background*/.wpcf7 {
                      background-image: url(http://i.imgur.com/iAFPf0G.jpg);
                      background-color: rgba(255, 255, 255, 0.2);
                      background-position: center;
                      background-size: cover;
                  }
                   
                  /*Label Text color*/.wpcf7-form p {
                      color: #FFFFFF;
                  }
                   
                  /*Submit button background & border*/.wpcf7-submit {
                      border: 2px solid #FFFFFF !important;
                      color: #FFFFFF !important;
                  }
                   
                  /*Submit button Hover styles*/.wpcf7-submit:hover {
                      border-color: transparent !important;
                      background-color: rgba(0, 0, 0, 0.2) !important;
                      color: #FFFFFF !important;
                  }
                   
                  /*Input Field border*/.wpcf7-text:focus, .wpcf7-textarea:focus {
                      border-color: #5A3D3D !important;
                  }

                  Tham khảo: gist.github.com/codehandling/0483efbc2e76890a3e6a9ae6737792bb

                  Kiểm tra nhập số điện thoại Việt Nam trên Contact Form 7

                  Thêm đoạn code này vào file function.php

                  /*
                  * Kiểm tra số điện thoại có 10 số của Việt Nam
                  */function custom_filter_wpcf7_is_tel( $result, $tel ) { 
                    $result = preg_match( '/^(0|\+84)(\s|\.)?((3[2-9])|(5[689])|(7[06-9])|(8[1-689])|(9[0-46-9]))(\d)(\s|\.)?(\d{3})(\s|\.)?(\d{3})$/', $tel );
                    return $result; 
                  }
                   
                  add_filter( 'wpcf7_is_tel', 'custom_filter_wpcf7_is_tel', 10, 2 );

                  Sử dụng mail-tags

                  đôi khi bạn cần thêm thông tin ngoài thông tin đầu vào của người gửi thông qua các trường biểu mẫu liên hệ.Ví dụ: bạn có thể cần biết địa chỉ IP của người gửi.

                  [_remote_ip]– Thẻ này được thay thế bằng địa chỉ IP của người gửi.

                  [_user_agent] – Thẻ này được thay thế bằng thông tin trình duyệt của người gửi.

                  [_url]– Thẻ này được thay thế bằng URL của trang mà biểu mẫu liên hệ được đặt.

                  [_date]– Thẻ này được thay thế bằng ngày gửi.

                  [_time]– Thẻ này được thay thế bằng thời gian gửi.

                  [_invalid_fields]– Thẻ này được thay thế bằng số lượng trường biểu mẫu có đầu vào không hợp lệ.

                  [_serial_number]– Thẻ này được thay thế bằng một chuỗi số có giá trị tăng dần, vì vậy thẻ này có thể hoạt động như số thứ tự của mỗi lần gửi. Yêu cầu cài đặt Flamingo.

                  Các thẻ thư liên quan đến bài đăng

                  Các thẻ thư cung cấp thông tin về bài đăng chỉ hoạt động khi biểu mẫu liên hệ được đặt bên trong nội dung bài đăng.Trong trường hợp biểu mẫu liên hệ nằm ngoài nội dung bài đăng, chẳng hạn như khi biểu mẫu liên hệ được đặt trong sidebar widget hoặc được nhúng trong theme’s template, nó trả ra nội dung trống.

                  [_post_id]– Thẻ này được thay thế bằng ID của bài đăng.

                  [_post_name]– Thẻ này được thay thế bằng tên (slug) của bài đăng.

                  [_post_title]– Thẻ này được thay thế bằng tiêu đề của bài đăng.

                  [_post_url]– Thẻ này được thay thế bằng URL liên kết cố định của bài đăng.

                  [_post_author]– Thẻ này được thay thế bằng tên tác giả của bài viết.

                  [_post_author_email]– Thẻ này được thay thế bằng email tác giả của bài đăng.

                  Các thẻ thư này cung cấp thông tin về trang web WordPress mà bạn quản lý các biểu mẫu liên hệ. Bạn sẽ thấy chúng đặc biệt hữu ích khi bạn muốn sử dụng lại cùng một bộ mẫu biểu mẫu liên hệ giữa nhiều trang web, vì bạn được giải phóng khỏi việc sửa đổi thủ công thông tin trang web cho mỗi trang web.

                  [_site_title]– Thẻ này được thay thế bằng tiêu đề của trang web.

                  [_site_description]– Thẻ này được thay thế bằng phần mô tả (tagline) của trang web.

                  [_site_url]– Thẻ này được thay thế bằng URL trang chủ của trang web.

                  [_site_admin_email]– Thẻ này được thay thế bằng địa chỉ email của người dùng quản trị chính của trang web.

                  Các thẻ thư này cung cấp thông tin về người dùng đã đăng nhập hiện tại.

                  Vì các thẻ [_user_ *] này chỉ hoạt động khi người gửi có tài khoản trên trang WordPress và đã đăng nhập, bạn nên bật cài đặt chế độ chỉ dành cho người đăng ký bất cứ khi nào bạn sử dụng các thẻ này.

                  [_user_login]– Thẻ này được thay thế bằng tên đăng nhập của người dùng.

                  [_user_email]– Thẻ này được thay thế bằng địa chỉ email của người dùng.

                  [_user_url]– Thẻ này được thay thế bằng URL trang web của người dùng.

                  [_user_first_name]– Thẻ này được thay thế bằng tên của người dùng.

                  [_user_last_name]– Thẻ này được thay thế bằng họ của người dùng.

                  [_user_nickname]– Thẻ này được thay thế bằng biệt hiệu của người dùng.

                  [_user_display_name]– Thẻ này được thay thế bằng tên hiển thị của người dùng.

                  Nguồn: contactform7.com/special-mail-tags/

                  Chuyển hướng đến một URL khác sau khi gửi

                  Như bạn đã biết, Biểu mẫu liên hệ 7 chuyển hướng đến cùng một URL với URL của biểu mẫu sau khi gửi biểu mẫu trong cài đặt mặc định. Tuy nhiên, trong một số trường hợp hiếm hoi, bạn có thể cần phải thay đổi điều này để làm cho nó chuyển hướng đến một URL khác sau khi gửi. Tôi sẽ viết trong bài đăng này cách bạn có thể thiết lập Biểu mẫu liên hệ 7 để thực hiện điều đó.

                  Nhân tiện, tôi thường được người dùng hỏi rằng làm thế nào họ có thể chuyển hướng đến cái gọi là “Trang cảm ơn”. Trong hầu hết các trường hợp, họ muốn biết điều đó vì họ cho rằng việc chuyển hướng đến “Trang Cảm ơn” là cần thiết để theo dõi việc gửi biểu mẫu bằng Google Analytics.
                  Vì vậy, bạn có lý do khác để chuyển hướng đến một URL khác?

                  Cách đơn giản nhất là sử dụng sự kiện DOM tùy chỉnh của Contact Form 7 để chạy JavaScript. Sau đây là một ví dụ về tập lệnh chuyển hướng bạn đến một URL khác.

                  [script]
                  document.addEventListener( 'wpcf7mailsent', function( event ) {
                    location = 'http://example.com/';
                  }, false );
                  [/script]
                  

                  Cách đơn giản chép đoạn code (nhớ đổi [] thành <> khi dùng) vào trang có hiện contact form, chỉnh link trả về khi đã gửi được.

                  Redirecting to another URL after submissions

                  Tối ưu Contact Form 7 cho WordPress

                  Tối ưu JS và CSS cho trang nào sử dụng form

                  Đoạn code bên dưới giúp website chỉ tải các đoạn css / js ở những trang nào có hiển thị Form, còn các trang khác sẽ không có giúp website của bạn tải tốt hơn.

                  add_filter( 'wpcf7_load_js', '__return_false' ); // xoa file javascript cua contact form 7
                  add_filter( 'wpcf7_load_css', '__return_false' ); // xoa file css cua contact form 7
                  function contactform7_load_file_phongmyvn($content){
                  global $post;
                  $post_content = $post->post_content;
                  if ( has_shortcode( $post_content, 'contact-form-7' ) ) {
                  if ( function_exists( 'wpcf7_enqueue_scripts' ) ) {wpcf7_enqueue_scripts();} // kich hoat dieu kien lai javascript
                  if ( function_exists( 'wpcf7_enqueue_styles' ) ) {wpcf7_enqueue_styles();} // kich hoat dieu kien lai css
                  }
                  return $content;
                  }
                  add_action( 'the_content', 'contactform7_load_file_phongmyvn',9 );
                  

                  Loại bỏ Refill trong contact form 7

                  Contact form 7 tích hợp gọi ajax reset captcha thì tự động gọi file refill. Refill là một tính năng bảo mật reset lại captcha nếu website của bạn đang sử dụng cache html page.

                  Nếu bạn không sử dụng captcha cho form thì nên tắt nó đi. Code này can thiệp trực tiếp vào core của Contact form 7, nên khi update bạn chịu khó vào chỉnh sửa lại nhé.

                  B1: Vào thư mục plugin: /wp-content/plugins/contact-form-7/includes tìm đến file : controller.php

                  B2: Bạn tìm và xóa code bên dưới là được.

                  if ( defined( 'WP_CACHE' ) && WP_CACHE ) {
                  $wpcf7['cached'] = 1;
                  }
                  

                   

                  Code mẫu gửi contact form 7 về Facebook Messenger.

                  Sử dụng BOT gửi tin nhắn tự động về Messenger

                  Thêm nút liên hệ cho website không cần plugin

                  Thêm nút liên hệ cho website không cần plugin
                  Nội dung

                    Mình tham khảo một số website đẹp trên mạng, thấy họ có mấy nút liên hệ nhanh tuyệt vời quá nên mình tổng hợp và cóp nhặt về để làm cho website của mình. Kết quả là thật đáng tự hào, code HTML và CSS khá đơn giản nhưng cực kỳ hữu ích.

                    Nút liên hệ 3 nút Zalo – Messenger – Tổng Số Comment

                    Nut Lien He 3button
                    Hiện thị Lightbox comment Zalo – Khi lick vào sẽ có 1 Box Comment của Zalo hiện thị , sẽ hiẹn thị comment theo từng ID bài đăng nhé
                    Chát messenger – Trực tiếp vào messenger để chát với Mình
                    Hiện thị Tổng Số Comment trên trang , có link trọ tới comment để có thể Bình luận trên mỗi bài đăng.

                    <div class="tg_contact_fixed_2021">
                    <ul>
                    <li class="zalo-cm">
                    <a href="#zalo1"><img src="/wp-content/uploads/2021/10/zalo.png"></a>
                     
                    
                    
                    
                     
                    </li>
                    <li>
                    <a href="http://m.me/100001876557849" data-toggle="tooltip" data-html="true" target="_blank" data-placement="left" title="" data-original-title="Messenger">
                    <img src="/wp-content/uploads/2021/10/mess.png"></a>
                    </li>
                    <li>
                    <a href="#comments" data-toggle="tooltip" data-html="true" class="chatwithus" id="livechat" data-placement="left" title="" data-original-title="Bình Luận bài đăng"><span>
                    [wpb_total_comments]</span>
                    <img src="/wp-content/uploads/2021/10/contac.png">
                    </a></li>
                    </ul>
                    
                    </div>
                    <style>
                    .tg_contact_fixed_2021 {
                        position: fixed;
                        z-index: 999;
                    right: 25px !important;
                        bottom: 80px !important;
                    }
                    .tg_contact_fixed_2021 ul li {
                        margin: 0 0 10px 0;
                        position: relative;
                        list-style: none;
                    }
                    .tg_contact_fixed_2021 ul li a {
                        width: 55px;
                        height: 55px;
                        background: #22aef9;
                        color: #fff;
                        display: table;
                        text-align: center;
                        line-height: 53px;
                        cursor: pointer;
                        -webkit-border-radius: 50%;
                        -moz-border-radius: 50%;
                        -ms-border-radius: 50%;
                        -o-border-radius: 50%;
                        border-radius: 50%;
                        -webkit-user-select: none;
                        -moz-user-select: none;
                        -ms-user-select: none;
                        user-select: none;
                    }
                    .tg_contact_fixed_2021 a.chatwithus span {
                        position: absolute;
                        top: 0;
                        right: 0;
                        width: 20px;
                        height: 20px;
                        background: #ff0700;
                        color: #fff;
                        border-radius: 50%;
                        text-align: center;
                        line-height: 15px;
                        font-size: 11px;
                        padding: 3px;
                    }
                    </style>

                    Tạo 1 Short có tên là [ wpb_total_comments] bằng cách thêm code sau vào function.php hoặc trong wp-extra

                    // Đếm số commem trong bài
                    function wpb_comment_count() { 
                    $comments_count = wp_count_comments();
                    $message =  '  '.  $comments_count->approved . '  ';
                    return $message; 
                    } 
                    add_shortcode('wpb_total_comments','wpb_comment_count'); 
                    add_filter('widget_text','do_shortcode');

                    Tiếp theo chèn comment bằng zalo vào data-appid=”2646601289461634641″

                    Để tạo tài khoản Zalo Official bạn truy cập vào địa chỉhttp://developers.zalo.metiếp theo chọn Ứng dụng của tôi > Thêm mới ứng dụng.

                    Tiếp theo Truy cập Tài liệu bằng link sau https://developers.zalo.me/docs/social/zalo-comment-widget

                    Thêm nút liên hệ cho website không cần plugin

                    Lấy mã Zalo bình luận

                    Thêm nút liên hệ cho website không cần plugin

                    Thay số: ID Zalo của bạn vào.

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

                    Theme Flatsome

                    Bước 1: Truy cập vị trí cần dán code

                    Trên thanh đen đen trên cùng có chữFlatsome – Advanced – Global Setting – Footer Script

                    Bước 2: Cắt dán đoạn code cần thiết

                    Các bạn copy và paste toàn bộ đoạn code dưới đây vàoFooter Script

                    Menu 5 nút (Chỉ đường, Zalo, Messenger, Gọi điện, Nhắn tin) + Desktop

                    Thêm nút liên hệ cho website không cần plugin

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

                    Thanh liên hệ nhanh gồm nút Gọi điện, Nhắn tin, Chat Zalo và Chat Messenger

                    <style>
                    .bottom-contact{display:none}
                    @media  (max-width: 767px) {
                    .bottom-contact{display: block;
                        position: fixed;
                        bottom: 0;
                        background: white;
                        width: 100%;
                        z-index: 99;
                        box-shadow: 2px 1px 9px #dedede;
                        border-top: 1px solid #eaeaea;}
                    .bottom-contact ul li{width: 25%;
                        float: left;
                        list-style: none;
                        text-align: center; font-size:13.5px;}
                    .bottom-contact ul li span{color:black}
                    .bottom-contact ul li img{    width: 35px;
                        margin-top: 10px;
                        margin-bottom: 0px;}
                     
                    }
                    </style>
                    <div class="bottom-contact">
                    <ul>
                    <li>
                    <a id="goidien" href="tel:xxxx">
                    <img src="duong-link-icon-goi-dien"/>
                    <br>
                    <span>Gọi điện</span>
                    </a>
                    </li>
                    <li>
                    <a id="nhantin" href="sms:xxxx">
                    <img src="duong-link-icon-nhan-tin-sms"/>
                    <br>
                    <span>Nhắn tin</span>
                    </a>
                    </li>
                    <li>
                    <a id="chatzalo" href="https://zalo.me/xxxx">
                    <img src="duong-link-icon-zalo-chat"/>
                    <br>
                    <span>Chat Zalo</span>
                    </a>
                    </li>
                    <li>
                    <a id="chatfb" href="https://m.me/yyyy">
                    <img src="duong-link-icon-nhan-tin-messenger"/>
                    <br>
                    <span>Messenger</span>
                    </a>
                    </li>
                    </ul>
                    </div>

                    Contact bar bên trái mobile – 2 nút Gọi điện + chat Messenger

                    Thêm nút liên hệ cho website không cần plugin

                    <style>
                    .mobile-hotline{display:none}
                     
                    .hotline {position: fixed;
                        left: 10px;
                        bottom: 10px;
                        z-index: 9000;
                        display: block;
                        background: #fac100;
                        color: red;
                        padding-top: 5px;padding-bottom:5px; padding-left:12px; padding-right: 12px;
                        border-radius: 99px;}
                    .hotline .hotline-number{font-size:20px; color: #b20000; font-weight: bold}
                     
                    @media  (max-width: 767px) {
                     
                        .hotline{
                     
                            display :none;
                     
                        }
                    .mobile-hotline{display: block; bottom: 0; width: 100%; background:rgba(0,0,0,0.5); height: 60px; position: fixed; z-index:9999999}
                    .mobile-hotline .mobile-hotline-left{width: 45%; float: left; text-align: center; background: #00a502; margin-left: 10px; margin-right:5px; margin-top: 7px; height: 45px; border-radius: 4px}
                    .mobile-hotline .mobile-hotline-left a{color: white; line-height: 46px; font-size:16px; font-weight: bold}
                     
                    .mobile-hotline .mobile-hotline-right{width: 45%; float: right; text-align: center; background: #fac100; margin-left: 5px; margin-right: 10px; margin-top: 7px; height: 45px; border-radius: 4px}
                    .mobile-hotline .mobile-hotline-right a{color: red; line-height: 46px; font-size: 16px; font-weight: bold}
                    }
                    </style>
                    <a href="tel:+84972939830"><div class="hotline">
                    <span class="before-hotline">Hotline:</span>
                    <span class="hotline-number">0972.939.830</span>
                    </div></a>
                    <div class="mobile-hotline">
                    <div class="mobile-hotline-left">
                    <a href="http://www.messenger.com/t/joseph.thien.75" target="blank">Chat Facebook</a>
                    </div>
                    <div class="mobile-hotline-right"><a href="tel:+84972939830" target="blank">Gọi điện ngay</a></div>
                    </div>

                    Contact bar mobile – 2 nút Gọi ngay + chat Zalo hoặc Messenger

                    <style>
                    .hotline-footer{display:none}
                    @media  (max-width: 767px) {
                    .hotline-footer{display:block; position:fixed; bottom:0; width:100%; height:50px; z-index:99; background:rgba(0,0,0,0.6)}
                    .hotline-footer .left{    width: 65%;
                        float: left;
                        height: 100%;
                        color: white;
                        line-height: 43px;
                        text-align: center;}
                    .hotline-footer .right{    width: 35%;
                        float: right;
                        height: 100%;
                        line-height: 43px;
                        text-align: center;}.absolute-footer{font-size:13px}
                    .blog-single .large-9, .blog-single .large-3{    flex-basis: 100%;
                    max-width: 100%;}.blog-single .large-3{padding-left:15px; font-size:15px}
                     
                    .blog-single .large-3 .widget-area .section4{display:none}.tin-tuc-section .cot1-2{display:none}.hotline-footer a{color:white}
                    .hotline-footer a{display:block;}.hotline-footer .left a{    background: #0082d0;
                        line-height: 40px;
                        margin: 5px;
                    border-radius: 3px;}.hotline-footer .right a{background: #3fb801;
                        line-height: 40px;
                        margin: 5px;
                    border-radius: 3px;}
                    .hotline-footer .left img, .hotline-footer .right img{width:30px;    padding-right: 10px;}}
                    </style><div class="hotline-footer">
                    <div class="left">
                    <a href="https://messenger.com/t/joseph.thien.75" ><img src="/wp-content/uploads/2018/09/icon.png"/>Chat với tư vấn viên</a>
                    </div>
                    <div class="right">
                    <a href="tel:0972939830"><img src="/wp-content/uploads/2018/09/phone-icon.png"/>Gọi ngay</a>
                    </div>
                    <div class="clearboth"></div>
                    </div>

                    Contact bar mobile – 3 nút Gọi ngay + Mua hàng + Xem chia sẻ

                    Thêm nút liên hệ cho website không cần plugin

                    <style>
                    .hotline-footer{display:none}
                    @media  (max-width: 767px) {
                    .hotline-footer{display:inline-block; position:fixed; bottom:0; height:45px; width:100%; z-index:999}
                    .hotline-footer .left{float:left; width:33.33%; background:#d60000; text-align:center; height:100%}
                    .hotline-footer .middle{float:left; width:33.33%; background:#11ad11; text-align:center; height:100%}
                    .hotline-footer .right{float:right; width:33.33%;background:#f38800; text-align:center; height:100%}
                    .hotline-footer .clearboth{clear:both}
                    .hotline-footer .right a, .hotline-footer .left a, .hotline-footer .middle a{line-height: 42px;
                    font-size: 13px;color:white}
                    .hotline-footer img{width:20px; padding-right:4px}}
                    </style>
                    <div class="hotline-footer">
                    <div class="left">
                    <a href="tel:0972939830" ><img src="/wp-content/uploads/2018/09/phone-icon.png"/>Gọi tư vấn</a>
                    </div>
                    <div class="middle">
                    <a href="/khach-hang-chia-se/" ><img src="/wp-content/uploads/2018/09/icon.png"/>Đọc chia sẻ</a>
                    </div>
                    <div class="right">
                    <a href="#dat-mua"><img src="/wp-content/uploads/2018/09/phone-icon.png"/>Đặt mua</a>
                    </div>
                    <div class="clearboth"></div>
                    </div>

                    Menu 3 nút (Messenger, Zalo, Hotline)

                    Thêm nút liên hệ cho website không cần plugin

                    <style>
                    .giuseart-mobile-contact-bar{
                    display:none 
                    }
                    .giuseart-pc-contact-bar{
                    left: 30px;
                    bottom: 30px;
                    position: fixed;
                    z-index: 998;
                    margin-bottom:0
                    }
                    .giuseart-pc-contact-bar li{
                    width: 44px;
                    height: 46px;
                    overflow: hidden;
                     margin-bottom: 0;
                    list-style: none;
                    }
                    .giuseart-pc-contact-bar li.facebook{
                    margin-bottom: 8px;
                    background: url(https://giuseart.com/wp-content/uploads/2020/03/fb.png);
                    background-repeat: no-repeat;
                    }
                    .giuseart-pc-contact-bar li.zalo{
                    background: url(https://giuseart.com/wp-content/uploads/2020/03/zl.png);    background-repeat: no-repeat;
                    }
                    .giuseart-pc-contact-bar li a{
                    display: block;
                    width: 44px;
                    height: 44px;
                    }
                     
                    @media only screen and (max-width: 499px) {
                    .giuseart-pc-contact-bar{
                    display:none
                    }
                    .giuseart-mobile-contact-bar{
                    left: 10px;
                    bottom: 10px;
                    position: fixed;
                    z-index: 998;
                    margin-bottom:0;
                    display:block !Important
                    }
                    .giuseart-mobile-contact-bar li{
                    display:inline-block;
                    float:left;
                    margin-right:7px;
                    list-style:none
                    }
                    .giuseart-mobile-contact-bar li.facebook{
                    margin-bottom: 8px;
                    background: url(https://giuseart.com/wp-content/uploads/2020/03/fb.png);
                    background-repeat: no-repeat;
                    }
                    .giuseart-mobile-contact-bar li.zalo{
                    background: url(https://giuseart.com/wp-content/uploads/2020/03/zl.png);    background-repeat: no-repeat;
                    }
                    .giuseart-mobile-contact-bar li a{
                    display: block;
                    width: 44px;
                    height: 44px;}
                    .giuseart-mobile-contact-bar li.hotline {
                    background: url(https://giuseart.com/wp-content/uploads/2020/03/p2.gif);
                    background-repeat: no-repeat;
                    background-size: 44px;
                    }
                    }
                     
                    </style>
                    <ul class="giuseart-pc-contact-bar">
                    <li class="facebook">
                    <a href="https://m.me/fb" target="_blank" rel="nofollow"></a>
                    </li>
                    <li class="zalo">
                    <a href="https://zalo.me/sdtzalo" target="_blank" rel="nofollow"></a>
                    </li>
                    </ul>
                     
                    <ul class="giuseart-mobile-contact-bar">
                    <li class="facebook">
                    <a href="https://m.me/fb" target="_blank" rel="nofollow"></a>
                    </li>
                    <li class="zalo">
                    <a href="https://zalo.me/sdtzalo" target="_blank" rel="nofollow"></a>
                    </li>
                    <li class="hotline">
                    <a href="tel:sdt" target="_blank" rel="nofollow"></a>
                    </li>
                    </ul>

                    liên hệ all in one phiên bản có yêu cầu gọi lại

                    Thêm nút liên hệ cho website không cần plugin

                    Một số lưu ý trước khi làm theo:

                    • Các bạn cài giúp mình plugin contact form 7, vì mình sử dụng plugin này để nhận dữ liệu đổ về.
                    • Font trong demo mình dùng là FontAwsome 5.9 vì vậy các bạn nên import font này vào trước nhé.
                    • Các bạn copy và dán code vào vị trí mà mình mong muốn, có 2 cách 1 là dùng hook để hook vào footer, 2 là các bạn copy và dán vào footer.

                    Bạn nào chưa biết cách chèn font awsome thì làm theo code này (Cách này không khuyến khích, theo mình nên tải bộ font về, nhưng cách này nhanh^^)

                    function add_font3(){
                        echo '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css" />';
                    }
                    add_action('wp_head','add_font3');

                    Đối với button này sẽ chia làm 3 phần HTML, CSS và JS các bạn pass nó vào các mục tương ứng nhé.

                    Phần HTML của button all in one phiên bản yêu cầu gọi lại.

                    Đầu tiên tạo 1 cái form contact form 7 với 1 input là số điện thoại và submit thôi nhé. Hoặc các bạn có thể copy đoạn này vào form của mình

                    <div class="flex-custom">
                    [tel* tel-521 class:sdt-pt placeholder "Yêu cầu gọi lại"]
                          [submit class:button primary "Gửi"]
                    </div>

                    Phần HTML này vì mình có sử dụng PHP nữa nên mình sẽ hook nó vào footer lun.

                    Lưu ý dòng số 6, bạn sửa lại bằng form của mình nhé.

                    function lh_all_in_one_pttuan(){;?> 
                      <div id="main-div">
                          <div id="main-button" class="wave">
                            <i class="fas fa-comments"></i>
                          </div>
                          <div class="btn-call"><i class="fas fa-phone-alt"></i><?php echo do_shortcode('

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

                    ');?></div> <a href="#" class="whatsapp-custom"><i class="fab fa-whatsapp"></i></a> <a href="#" class="messenger-custom"><i class="fab fa-facebook-messenger"></i></a> <a href="#" class="zalo-custom"><i class="zalo-pt"></i></a> </div> <?php }; add_action('wp_footer','lh_all_in_one_pttuan');

                    Phần CSS này các bạn paste nó vào file style.css hoặc vị trí CSS theme

                    <style>
                    .wpcf7-form-control.sdt-pt{
                        width:150px;
                    }
                    .flex-custom{
                        display:flex;
                    }
                    .zalo-pt{
                        background: url(https://pttuan410.com/wp-content/uploads/2021/05/zalo.png) center center no-repeat;
                        background-size: contain;
                        border-radius: 100%;    
                        height:30px;
                        width:30px;
                    }
                     
                    #main-div {
                      position: fixed;
                      right: 20px;
                      bottom: 20px;
                      z-index: 0;
                    }
                     
                    #main-button {
                      display: flex;
                      align-items: center;
                      justify-content: center;
                      position: absolute;
                      right: 0;
                      bottom: 0;
                      height: 70px;
                      width: 70px;
                      font-size: 30px;
                      color: #0064f3;
                      cursor: pointer;
                      background-color: #fff;
                      box-shadow: 0 0 10px 0 rgba(0,0,0,.5);
                      border-radius: 50%;
                      -webkit-border-radius: 50%;
                      -moz-border-radius: 50%;
                      -ms-border-radius: 50%;
                      -o-border-radius: 50%;
                    }
                     
                    #main-button ~ .btn-call {
                        display: flex;
                        padding: 10px;
                      visibility: hidden;
                      font-weight: 600;
                      height: 55px;
                      color: #fff;
                      background: linear-gradient(90deg, #00a1f5, #0064f3);
                      box-shadow: 0 0 10px 0 rgba(0,0,0,.5);
                      border: 0;
                      position: absolute;
                      z-index: -1;
                      right: 0;
                      bottom: 0;
                      opacity: 0;
                      white-space: nowrap;
                      cursor: pointer;
                      transition: .2s all linear;
                      -webkit-transition: .2s all linear;
                      -moz-transition: .2s all linear;
                      -ms-transition: .2s all linear;
                      -o-transition: .2s all linear;
                      border-radius: 5px;
                      -webkit-border-radius: 5px;
                      -moz-border-radius: 5px;
                      -ms-border-radius: 5px;
                      -o-border-radius: 5px;
                    }
                    .btn-call .fas{
                        font-size: 22px;
                        margin: auto 10px;
                    }
                    #main-button.open ~ .btn-call {
                      visibility: visible;
                      right: 85px;
                      opacity: 1;
                      transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                      -webkit-transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                      -moz-transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                      -ms-transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                      -o-transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                    }
                     
                    #main-button ~ a {
                      display: flex;
                      align-items: center;
                      justify-content: center;
                      cursor: pointer;
                      position: absolute;
                      right: 0;
                      bottom: 0;
                      z-index: -1;
                      height: 60px;
                      width: 60px;
                      font-size: 30px;
                      opacity: 0;
                      text-decoration: none;
                      color: #fff;
                      background-color: #fff;
                      box-shadow: 0 0 10px 0 rgba(0,0,0,.5);
                      border-radius: 50%;
                      -webkit-border-radius: 50%;
                      -moz-border-radius: 50%;
                      -ms-border-radius: 50%;
                      -o-border-radius: 50%;
                      transition: .2s all linear;
                      -webkit-transition: .2s all linear;
                      -moz-transition: .2s all linear;
                      -ms-transition: .2s all linear;
                      -o-transition: .2s all linear;
                    }
                     
                    #main-button ~ .zalo-custom {
                      background: linear-gradient(0deg, #017AB1, #01ABE6);
                    }
                     
                    #main-button ~ .whatsapp-custom {
                      background: linear-gradient(0deg, #00B100, #09db09);
                    }
                     
                    #main-button ~ .messenger-custom {
                      background: linear-gradient(0deg, #0078FF, #00C6FF);
                    }
                     
                    #main-button.open ~ a {
                      opacity: 1;
                      transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                      -webkit-transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                      -moz-transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                      -ms-transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                      -o-transition: .4s all cubic-bezier(0, 0.01, 0, 1.27);
                    }
                    #main-button.open ~ a:nth-of-type(1) {
                      bottom: 80px;
                    }
                    #main-button.open ~ a:nth-of-type(2) {
                      bottom: 160px;
                    }
                    #main-button.open ~ a:nth-of-type(3) {
                      bottom: 240px;
                    }
                     
                    .wave {
                      animation-name: wave;
                      animation-duration: 1s;
                      animation-timing-function: linear;
                      animation-iteration-count: infinite;
                    }
                     
                    @keyframes wave {
                      0% {box-shadow: 0 0 0px 0px rgba(255, 255, 255, 0.5);}
                      100% {box-shadow: 0 0 0px 10px rgba(255, 255, 255, 0);}
                    }
                     
                    .open {
                      animation-iteration-count: 1;
                    }
                    .wpcf7-response-output{
                        position: absolute;
                        top: -75px;
                        right: -35px;
                    }
                    </style>

                    để trong mượt hơn, các bạn thêm phần JS này nhé.

                    Thêm JQUERY

                    <script>
                    jQuery(document).ready(function ($) {
                    var mainDiv =  jQuery('#main-button');
                    mainDiv.on('click', function($){
                      jQuery(this).find('i').toggleClass('fa-times');
                      jQuery(this).toggleClass('open');
                    });
                    });
                    </script>

                    Nút Thêm vào giỏ hàng + Tư vấn

                    Thêm nút liên hệ cho website không cần plugin

                    copy đoạn code dưới đây vào file function

                    function footerfixed(){
                        ob_start();
                        if(wp_is_mobile() && is_product()){;?>
                        <div class="footer-fixed">
                            <div class="col1">
                                <a href="#linkchatfb">
                                    <i class="fab fa-facebook-messenger"></i>
                                    <span>Tư vấn</span>
                                </a>
                            </div>
                            <div class="col2">
                                <a id="addtocart" href="#">
                                    <i class="fa fa-cart-plus" aria-hidden="true"></i>
                                    <span> Mua ngay</span>
                                </a>
                            </div>
                        </div>
                        <?php };?>
                        <?php $list_post = ob_get_contents();
                        ob_end_clean();
                      return $list_post;
                    }
                    add_shortcode('footerfixed','footerfixed');
                    function script_menu_footer_pttuan(){;?>
                    <script>
                    jQuery(document).ready(function ($) {
                    var id = $('.single_add_to_cart_button').val();
                    $('#addtocart').attr("href", "?add-to-cart="+id);
                    });
                    </script>
                    <?php };
                    add_action('wp_footer','script_menu_footer_pttuan');

                    cuối cùng là css

                    .footer-fixed {
                        display: flex;
                        position: fixed;
                        width: 100%;
                        left: 0;
                        bottom: 0;
                        z-index: 10;
                        border-top: 1px solid #e5e5e5;
                        text-transform: uppercase;
                    }
                    .footer-fixed .col1 {
                        background: #ffad00;
                    }
                    .footer-fixed div {
                        text-align: center;
                        width: 50%;
                        padding: 10px 0;
                    }
                    .footer-fixed .col2 {
                        background: #62862b;
                    }
                    .footer-fixed div span {
                        margin-left: 10px;
                    }

                    Để có thể sử dụng được thì các bạn copy short code [footerfixed] và dán vào footer của website nhé.

                    Button chạy dọc website

                    Và ngay sau đây, sẽ là bài hướng dẫn chi tiết để các bạn ai cũng đều có thể thực hiện được.

                    Bước 1:Các bạn chọnUX Blocks-> Thêm mới -> Đặt tiêu đề bất kỳ & dán đoạnhtmlbên dưới vào -> Chọn“Edit With UX Builder”

                    <p style="font-size: 22px;"><small style="vertical-align: top;">$</small>59</p> <p style="font-size: 11px;">Buy Now</p>
                    <img src="https://mywebsite.com.vn/wp-content/uploads/2021/08/my-website-logo-2-800x400.png"> <p style="font-size: 11px;">Demos</p>
                    <img src="https://mywebsite.com.vn/wp-content/uploads/2021/08/whatsapp-400x400.png"> <p style="font-size: 11px;">Support</p>

                    Bước 2:Tại trình UX Builder các bạn sẽ thấy elementStackđược tạo tương tự như bên dưới. Tại đây, các bạn click chọn từng phần tử “text” -> Chọn “Open Text Editor” -> Xóa toàn bộ văn bản và hình ảnh có sẵn, thay thế lại thành nội dung & hình ảnh của các bạn, và chèn thêmlink liên kếtnếu cần. Sau đó update để lưu lại (khuyến nghị dùng ảnh trắng, nền trong).

                    Thêm nút liên hệ cho website không cần plugin

                    Bước 3:Các bạn coppy đoạn CSS ở dưới, dán vào mục“CSS tùy chỉnh”trong“Tùy biến”hoặc mục“Custom CSS”trong“Advance”của theme Flatsome.

                    .demo-wrapper{width: 70px;
                        overflow: hidden;
                        color: #FFF;
                        text-align: center;
                        padding: 0;
                        margin: 0;
                        position: fixed;
                        right: 5px;
                        top: 45%;
                        z-index: 25;
                    }
                    .demo-button {
                        display: block;
                        transition: all .3s;
                        -webkit-transition: all .3s;
                        background-color: rgba(0,0,0,.4);
                        text-align: center;
                        padding: 5px;
                        border-radius: 3px;
                    }
                    .demo-button p {
                        margin-bottom: 0;
                        color: #FFF;
                        font-weight: bolder;
                        font-size: 13px;
                        line-height: 1.3;
                        text-transform: uppercase;
                    }
                    .demo-button:hover {
                        background-color: #0073aa!important; /*Mã màu nền khi rê chuột*/    transform: translateX(0);
                    }

                    Bước sau cùng, tùy thuộc vào việc bạn muốn menu button này xuất hiện ở một bài viết cụ thể, hoặc tất cả bài viết, hoặc toàn bộ trang web mà thực hiện như sau:

                    1. Xuất hiện ở toàn bộ trang web:Các bạn copy lại đoạn Shortcode của Block đã tạo ở bước 1 -> Trong Flatsome, Chọn “advance” -> Dán đoạn Shortcode vào khung “FOOTERSCRIPTS” & lưu lại.
                    2. Menu button xuất hiện ởtoàn bộ bài viết: Các bạn cũng copy đoạn Shortcode của Block lại, Chọn “Tùy biến” -> “Blog” -> “Blog Single Post” -> Kéo xuống dưới cùng & dán Shortcode vào mục “HTML after blog posts“.
                    3. Xuất hiện ởbài viết cụ thể: Tại bài viết đó, các bạn chọn “Add elements” -> Chọn “Block” -> Tại danh mục blocks có sẵn, các bạn chọn block đã tạo ở bước 1, và update.

                       

                      Xong cuôi các bạn refresh lại trang để xem thành quả.

                     

                    Nguồn: giuseart và pttuan410

                    Những website tải icon hình ảnh cho thiết kế

                    Những website tải icon hình ảnh cho thiết kế
                    Nội dung

                      𝗙𝗶𝗻𝗱𝗜𝗰𝗼𝗻𝘀
                      – Là trang web tải icon đồ sộ với giao diện tìm kiếm thân thiện, giúp cho người dùng dễ dàng tham khảo và tải xuống những icon chất lượng cao. Đây cũng là kho icon được đánh giá là đồ sộ nhất hiện nay.
                      – Website: https://findicons.com/
                      𝗜𝗰𝗼𝗻𝗳𝗶𝗻𝗱𝗲𝗿
                      – Đây cũng là kho icon trù phú với giao diện quá ư thân thiện. Nó bao gồm gợi ý icon các ngành nghề, những chuyên gia thiết kế icon được yêu thích nhất, các icon được sử dụng phổ biến nhất hoặc các phong cách icon điển hình.
                      𝗜𝗰𝗼𝗻𝗔𝗿𝗰𝗵𝗶𝘃𝗲
                      – Đây cũng là kho icon phong phú được nhiều Design ưa thích. Với hơn 330.00 icon, biểu tượng khác nhau, bạn có thể tham khảo cả ngày và dễ dàng sắp xếp, thu thập nó hoặc chia sẻ các icon của mình tại IconArchive.
                      – Website: https://iconarchive.com/
                      𝗗𝗲𝘀𝗶𝗴𝗻𝘅𝗲𝗹
                      – Nơi để tải xuống hàng ngàn mẫu biểu tượng ở các định dạng khác nhau, PNG, Vector, GIF,…hoàn toàn miễn phí.
                      – Website: https://www.designxel.com/
                      Những website tải icon hình ảnh cho thiết kế
                      𝗩𝗲𝗿𝗶𝗜𝗰𝗼𝗻
                      – Đây là nơi thích hợp để tìm kiếm những icon và tải xuống dễ dàng. Tuy nhiên, VeriIcon không có quá nhiều icon cho bạn tham khảo (hơn 500.000 biểu tượng miễn phí).
                      – Website: https://www.veryicon.com/
                      𝗜𝗰𝗼𝗻𝗵𝗼𝘁
                      – Là kho icon đa lĩnh vực dành cho design, dễ dàng tải xuống. Tuy nhiên, với cá nhân thì Iconhot có giao diện không thu hút lắm.
                      – Website: https://www.iconhot.com/
                      𝗜𝗰𝗼𝗻𝗦𝗲𝗲𝗸𝗲𝗿
                      – Với hơn 50.000 icon, biểu tượng chất lượng cao, IconSeeker được đánh giá là một trong những kho lưu trữ và tải về icon tốt cho design.
                      – Website: https://www.iconseeker.com/
                      𝗜𝗰𝗼𝗻𝗺𝗼𝗻𝘀𝘁𝗿
                      – Khám phá hơn 4496 + mẫu icon tải xuống ở các định dạng khác nhau: PNG, PSD, EPS, SVG. Điểm cộng lớn cho Iconmonstr chính là giao diện tìm kiếm icon cực kỳ thân thiện.
                      𝗙𝗹𝗮𝘁𝗶𝗰𝗼𝗻
                      – Flaticon cung cấp hơn 3.829.500 icon, biểu tượng chất lượng, miễn phí và được tải xuống ở các định dạng như: SVG, PSD, PNG, EPS, ICON FONT.
                      – Website: https://www.flaticon.com/
                      𝗦𝗼𝗳𝘁𝗶𝗰𝗼𝗻𝘀
                      – Softicons là kho tàng icon thú vị với hàng ngàn biểu tượng khác nhau. Tuy nhiên, tôi không đánh giá cao sự thân thiện về giao diện của trang web này.

                      Lấy ảnh shutter stock miễn phí không có watermark

                      https://flatsomea-z.com/huong-dan-cach-lay-anh-shutter-stock-mien-phi-khong-watermark/
                      Bước 1: Truy cập trang web: vngraphic.com
                      Bạn hãy đăng ký 1 tài khoản miễn phí trên trang web này thông qua email hoặc qua facebook đều được. Đây là 1 trang web get ảnh từ nhiều nguồn khác nhau như shutter stock, freepik, adobe stock,…
                      Bước 2: Truy cập Shutter stock và tìm bất cứ ảnh nào mà bạn thích. Sau đó copy link ảnh nhé
                      Bước 3: Quay trở lại trang vngraphic.com và tìm đến mục Shutter stock free như ảnh. Paste link của bạn vào và ấn get link download