Hiển thị user online real-time trong WordPress

2 tháng ago, Hướng dẫn WordPress, Views
Hiển thị user online real-time trong WordPress

Giới thiệu về Hiển thị User Online Real-time trong WordPress

Hiển thị số lượng người dùng đang online trên trang web WordPress của bạn là một cách tuyệt vời để tạo cảm giác cộng đồng và tăng tính tương tác. Nó cho thấy trang web của bạn đang hoạt động và có người dùng quan tâm đến nội dung của bạn. Việc này có thể thúc đẩy người dùng mới đăng ký, tham gia thảo luận và dành nhiều thời gian hơn trên trang web.

Có nhiều cách để triển khai tính năng này, từ sử dụng plugin đơn giản đến viết code tùy chỉnh. Bài viết này sẽ hướng dẫn bạn qua các phương pháp khác nhau, ưu và nhược điểm của từng phương pháp, và cách lựa chọn phương pháp phù hợp nhất với nhu cầu của bạn.

Tại sao Hiển thị User Online lại Quan trọng?

Việc hiển thị số lượng người dùng đang online không chỉ là một con số vô tri. Nó mang lại nhiều lợi ích thiết thực cho trang web của bạn:

  • Tăng tính tương tác: Khi người dùng thấy có nhiều người khác đang online, họ cảm thấy mình là một phần của cộng đồng và có nhiều khả năng tham gia thảo luận hoặc để lại bình luận.
  • Tạo cảm giác tin cậy: Một trang web có nhiều người truy cập thường được coi là đáng tin cậy hơn. Điều này có thể khuyến khích người dùng chia sẻ trang web của bạn với bạn bè và người thân.
  • Cải thiện trải nghiệm người dùng: Bằng cách cho người dùng biết trang web của bạn đang hoạt động, bạn có thể giúp họ cảm thấy yên tâm và thoải mái hơn khi duyệt web.

Tuy nhiên, cũng cần lưu ý rằng việc hiển thị số lượng người dùng online không phải lúc nào cũng phù hợp. Nếu trang web của bạn có lượng truy cập thấp, việc hiển thị số lượng người dùng online có thể phản tác dụng. Trong trường hợp này, bạn có thể cân nhắc ẩn số lượng người dùng online hoặc chỉ hiển thị khi số lượng người dùng đạt một mức nhất định.

Các Phương pháp Hiển thị User Online trong WordPress

Có nhiều cách để hiển thị số lượng người dùng đang online trong WordPress. Dưới đây là một số phương pháp phổ biến nhất:

  • Sử dụng Plugin: Đây là cách đơn giản nhất và nhanh nhất để thêm tính năng này vào trang web của bạn. Có rất nhiều plugin miễn phí và trả phí có sẵn trên WordPress.org.
  • Sử dụng Code tùy chỉnh: Nếu bạn có kiến thức về PHP, bạn có thể viết code tùy chỉnh để hiển thị số lượng người dùng online. Phương pháp này cho phép bạn kiểm soát hoàn toàn cách tính năng này hoạt động.
  • Sử dụng Dịch vụ bên thứ ba: Một số dịch vụ bên thứ ba cung cấp tính năng theo dõi người dùng online và cho phép bạn nhúng nó vào trang web của mình.

Sử dụng Plugin để Hiển thị User Online

Sử dụng plugin là phương pháp được khuyến khích cho người mới bắt đầu. Dưới đây là một số plugin phổ biến:

  • WP Online Counter: Đây là một plugin miễn phí và dễ sử dụng, cho phép bạn hiển thị số lượng người dùng online, số lượng khách và số lượng bot.
  • Online Users: Plugin này cung cấp nhiều tùy chọn tùy chỉnh, cho phép bạn thay đổi cách hiển thị số lượng người dùng online và chỉ định thời gian hết hạn của phiên người dùng.
  • Simple Online Users: Một plugin đơn giản và nhẹ, tập trung vào hiệu suất và dễ sử dụng.

Hướng dẫn cài đặt và sử dụng plugin:

  1. Truy cập vào bảng điều khiển WordPress của bạn.
  2. Đi đến “Plugins” > “Add New”.
  3. Tìm kiếm plugin bạn muốn sử dụng (ví dụ: “WP Online Counter”).
  4. Nhấn “Install Now” và sau đó “Activate”.
  5. Sau khi kích hoạt, bạn có thể tìm thấy cài đặt plugin trong menu “Settings” hoặc trong menu con của “Plugins”.
  6. Tùy chỉnh cài đặt plugin theo ý muốn và lưu các thay đổi.
  7. Thông thường, plugin sẽ cung cấp một shortcode hoặc widget mà bạn có thể sử dụng để hiển thị số lượng người dùng online trên trang web của bạn.

Sử dụng Code tùy chỉnh để Hiển thị User Online

Nếu bạn muốn kiểm soát hoàn toàn cách tính năng này hoạt động, bạn có thể viết code tùy chỉnh. Dưới đây là một ví dụ về cách thực hiện điều này:

Lưu ý: Phương pháp này yêu cầu kiến thức về PHP và cơ sở dữ liệu WordPress. Hãy cẩn thận khi chỉnh sửa code của WordPress, vì một lỗi nhỏ có thể làm hỏng trang web của bạn. Nên sao lưu trang web của bạn trước khi thực hiện bất kỳ thay đổi nào.

Các bước thực hiện:

  1. Tạo một bảng trong cơ sở dữ liệu: Bạn cần tạo một bảng để lưu trữ thông tin về người dùng đang online. Bảng này có thể có các cột như session_id, user_id, timestamp, và ip_address.
  2. Cập nhật bảng khi người dùng truy cập trang web: Mỗi khi một người dùng truy cập trang web của bạn, bạn cần thêm một bản ghi mới vào bảng này hoặc cập nhật bản ghi hiện có nếu người dùng đã có một phiên đang hoạt động.
  3. Xóa các bản ghi hết hạn: Bạn cần định kỳ xóa các bản ghi đã hết hạn (ví dụ: các bản ghi có timestamp cũ hơn 15 phút). Điều này đảm bảo rằng bạn chỉ tính những người dùng đang thực sự online.
  4. Hiển thị số lượng người dùng online: Bạn có thể sử dụng một đoạn code PHP để truy vấn bảng và đếm số lượng bản ghi không hết hạn. Sau đó, bạn có thể hiển thị số lượng này trên trang web của mình bằng cách sử dụng một widget hoặc shortcode.

Ví dụ code (chỉ mang tính tham khảo, cần điều chỉnh cho phù hợp với nhu cầu của bạn):


<?php
// Tạo bảng (chỉ chạy một lần)
global $wpdb;
$table_name = $wpdb->prefix . 'online_users';
$charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
    session_id varchar(32) NOT NULL,
    user_id bigint(20) unsigned NOT NULL default '0',
    timestamp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
    ip_address varchar(45) NOT NULL,
    PRIMARY KEY  (session_id)
) $charset_collate;";

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );

// Hàm cập nhật thông tin người dùng online
function update_online_users() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'online_users';
    $session_id = session_id();
    $user_id = get_current_user_id();
    $ip_address = $_SERVER['REMOTE_ADDR'];
    $timestamp = date('Y-m-d H:i:s');

    // Kiểm tra xem session đã tồn tại chưa
    $existing_session = $wpdb->get_row( $wpdb->prepare( "SELECT session_id FROM $table_name WHERE session_id = %s", $session_id ) );

    if ( $existing_session ) {
        // Cập nhật session hiện tại
        $wpdb->update(
            $table_name,
            array(
                'user_id' => $user_id,
                'timestamp' => $timestamp,
                'ip_address' => $ip_address
            ),
            array( 'session_id' => $session_id ),
            array( '%d', '%s', '%s' ),
            array( '%s' )
        );
    } else {
        // Thêm session mới
        $wpdb->insert(
            $table_name,
            array(
                'session_id' => $session_id,
                'user_id' => $user_id,
                'timestamp' => $timestamp,
                'ip_address' => $ip_address
            ),
            array( '%s', '%d', '%s', '%s' )
        );
    }

    // Xóa session hết hạn (ví dụ: quá 15 phút)
    $expiration_time = date('Y-m-d H:i:s', strtotime('-15 minutes'));
    $wpdb->query( $wpdb->prepare( "DELETE FROM $table_name WHERE timestamp prefix . 'online_users';
    $count = $wpdb->get_var( "SELECT COUNT(*) FROM $table_name" );
    return $count;
}

// Gọi hàm cập nhật khi tải trang
add_action( 'wp_loaded', 'update_online_users' );

// Hiển thị số lượng người dùng online (ví dụ trong widget)
function online_users_widget() {
    $count = get_online_users_count();
    echo "<p>Hiện có $count người dùng đang online.</p>";
}

// Thêm widget (nếu cần)
//add_action( 'widgets_init', function(){
//     register_widget( 'Online_Users_Widget' );
//} );

// Class widget (ví dụ)
//class Online_Users_Widget extends WP_Widget {
//
//  function __construct() {
//      parent::__construct(
//          'online_users_widget',
//          __( 'Người dùng Online', 'text_domain' ),
//          array( 'description' => __( 'Hiển thị số lượng người dùng online', 'text_domain' ), )
//      );
//  }
//
//  public function widget( $args, $instance ) {
//      echo $args['before_widget'];
//      echo $args['before_title'] . __( 'Người dùng Online', 'text_domain' ) . $args['after_title'];
//      online_users_widget();
//      echo $args['after_widget'];
//  }
//}

// Shortcode (ví dụ)
function online_users_shortcode() {
    $count = get_online_users_count();
    return "<p>Hiện có $count người dùng đang online.</p>";
}
add_shortcode( 'online_users', 'online_users_shortcode' );

?>

Sau khi thêm code này vào file functions.php của theme (hoặc sử dụng một plugin code snippet), bạn có thể sử dụng shortcode [online_users] để hiển thị số lượng người dùng online trên trang web của bạn.

Lựa chọn Phương pháp Phù hợp

Việc lựa chọn phương pháp phù hợp phụ thuộc vào nhu cầu và kỹ năng của bạn. Dưới đây là một số gợi ý:

  • Nếu bạn là người mới bắt đầu: Sử dụng plugin là lựa chọn tốt nhất. Nó đơn giản, nhanh chóng và không yêu cầu kiến thức về code.
  • Nếu bạn muốn kiểm soát hoàn toàn tính năng này: Viết code tùy chỉnh là lựa chọn tốt nhất. Tuy nhiên, phương pháp này yêu cầu kiến thức về PHP và cơ sở dữ liệu WordPress.
  • Nếu bạn cần tính năng nâng cao: Bạn có thể sử dụng một dịch vụ bên thứ ba. Tuy nhiên, phương pháp này có thể tốn kém hơn so với các phương pháp khác.

Kết luận

Hiển thị số lượng người dùng online là một cách tuyệt vời để tăng tính tương tác và tạo cảm giác cộng đồng cho trang web WordPress của bạn. Có nhiều cách để triển khai tính năng này, từ sử dụng plugin đơn giản đến viết code tùy chỉnh. Hãy lựa chọn phương pháp phù hợp nhất với nhu cầu và kỹ năng của bạn.