Tạo một trang web WordPress riêng tư mà không cần một plugin lớn

Tìm hiểu cách đặt trang web WordPress của bạn ở chế độ riêng tư, vì vậy khách truy cập phải đăng nhập (hoặc đăng ký) để truy cập nội dung trang web của bạn. Bạn có thể làm điều này với các plugin thành viên truyền thống như Ultimate Member và BuddyPress, nhưng chúng lớn… khó quản lý và chúng liên tục bị tin tặc nhắm mục tiêu.

Chúng tôi sẽ tạo một plugin nhỏ của riêng mình, chỉ với vài dòng mã, để đặt một trang WordPress ở chế độ riêng tư. Chúng tôi cũng sẽ mượn một số mã từ hướng dẫn Pretty Logout Permalink của chúng tôi, vì vậy các thành viên có thể đăng xuất khỏi trang web bằng cách truy cập vào a / logout permalink slug - tuyệt vời trong các mục menu tùy chỉnh.

Những gì chúng ta sẽ làm…

  1. Tạo một plugin nhỏ / giàn giáo trên máy tính của bạn.
  2. Zip-up plugin và tải nó lên trang web WordPress của bạn.
  3. Kích hoạt plugin.
  4. Chỉnh sửa plugin và thêm một số mã để thực sự "làm cho nó hoạt động".
  5. Định cấu hình và kiểm tra plugin.

Bắt đầu

Trên máy tính của bạn, hãy tạo một thư mục có tên “wpt-private-site”. Trong thư mục này, tạo một tệp văn bản có tên wpt-private-site.php , dán đoạn mã sau vào đó và lưu tệp. Đây là mã vừa đủ để xác định plugin của chúng tôi.
/**
 * Plugin Name:       WPT Private Site
 * Plugin URI:        https://wp-tutorials.tech/add-functionality/create-a-private-wordpress-site-without-a-plugin/
 * Description:       Members-only site.
 * Version:           1.0.0
 * Author:            WP Tutorials
 * Author URI:        https://wp-tutorials.tech
 * License:           GPL-2.0+
 * License URI:       http://www.gnu.org/licenses/gpl-2.0.txt
 * Text Domain:       wpt-private-site
 */
const WPTPS_PLUGIN_SLUG = 'wpt-private-site';
const WPTPS_PLUGIN_VERSION = '1.0.0';
Zip-up thư mục, tải tệp zip lên vùng Plugin của trang web của bạn, sau đó kích hoạt nó. Bây giờ bạn sẽ có một plugin hoạt động được gọi là WPT Private Site .

Hãy viết một số mã

Chúng tôi sẽ giữ mọi thứ trong một tệp PHP duy nhất, bởi vì chúng tôi chỉ kết nối một vài bộ lọc và hành động. Chúng tôi không tải bất kỳ nội dung giao diện người nào (tệp CSS hoặc JS), vì vậy hãy giữ mọi thứ đơn giản.

Trong khu vực quản trị WordPress, hãy chuyển đến Plugins> Plugin Editor, chuyển sang plugin “WPT Private Site” và chỉnh sửa wpt-private-site.php . Sao chép và dán phần sau vào đó - thay thế những gì đã có trong đó.

/**
 * Plugin Name:       WPT Private Site
 * Plugin URI:        https://wp-tutorials.tech/add-functionality/create-a-private-wordpress-site-without-a-plugin/
 * Description:       Members-only site.
 * Version:           1.0.0
 * Author:            WP Tutorials
 * Author URI:        https://wp-tutorials.tech
 * License:           GPL-2.0+
 * License URI:       http://www.gnu.org/licenses/gpl-2.0.txt
 * Text Domain:       wpt-private-site
 */
const WPTPS_PLUGIN_SLUG = 'wpt-private-site';
const WPTPS_PLUGIN_VERSION = '1.0.0';
// Enable/disable site-wide private mode.
const WPTPS_IS_PRIVATE_SITE_ENABLED = true;
/**
 * IMPORTANT: If you change this, you need to go to
 * Admin > Settings > Permalinks > [Save Changes]
 */
const WPTPS_IS_PRETTY_LOGOUT_ENABLED = true;
const WPTPS_ACTION_QUERY_VAR = 'wptps_action';
const WPTPS_ENDPOINT_LOGOUT = 'logout';
/**
 * Check to see if we need to redirect the current request to the
 * WordPress login page.
 */
if (WPTPS_IS_PRIVATE_SITE_ENABLED) {
   function wptps_template_redirect() {
      if (is_user_logged_in()) {
         // Already logged-in, so son't do anything different.
      } else {
         // The user is not logged-in, so redirect them to the main login
         // page.
         auth_redirect();
      }
   }
   add_action('template_redirect', 'wptps_template_redirect');
}
/**
 * This code, to add a /logout permalink, is borrowed from from here:
 * https://wp-tutorials.tech/refine-wordpress/add-a-pretty-logout-permalink/
 */
if (WPTPS_IS_PRETTY_LOGOUT_ENABLED) {
   function wptps_rewrite_rules() {
      add_rewrite_rule(
         WPTPS_ENDPOINT_LOGOUT,
         'index.php?' . WPTPS_ACTION_QUERY_VAR . '=logout',
         'top'
      );
   }
   add_action('init', 'wptps_rewrite_rules');
   function wptps_query_vars($query_vars) {
      $query_vars[] = WPTPS_ACTION_QUERY_VAR;
      return $query_vars;
   }
   add_filter('query_vars', 'wptps_query_vars');
   function wptps_maybe_logout($template) {
      if (!is_user_logged_in()) {
         // User isn't logged-in, so we don't need to do anything.
      } elseif (empty($action = get_query_var(WPTPS_ACTION_QUERY_VAR))) {
         // Our Action query var hasn't been passed.
      } elseif ($action != 'logout') {
         // Our Action query var is not set to 'logout'.
      } else {
         // Logout and then redirect to the site's front page, which will
         // redirect to the login page if WPTPS_IS_PRIVATE_SITE_ENABLED is
         // set to true.
         wp_logout();
         wp_redirect(get_home_url());
         exit;
      }
      return $template;
   }
   add_action('template_include', 'wptps_maybe_logout');
}

Định cấu hình Plugin

Mã này đủ dễ đọc và về cơ bản nó cung cấp hai chức năng. Bạn có thể thấy hai khối chức năng được bao bọc trong các if()= {...}câu lệnh, được điều khiển bởi các hằng đúng / sai.

Đặt WPTPS_IS_PRIVATE_SITE_ENABLED= truenếu bạn muốn ẩn toàn bộ trang web khỏi những người dùng không đăng nhập. Vừa đủ dễ. Nếu bạn muốn hiển thị lại trang web của mình với mọi người, hãy thiết lập WPTPS_IS_PRIVATE_SITE_ENABLED= falsehoặc chỉ cần tắt plugin.

Một cách hay để sử dụng liên kết cố định mới / đăng xuất là tạo một mục menu tùy chỉnh.

Nếu bạn không muốn xác định liên kết cố định / logout, vì trang web của bạn đã có nó từ một plugin khác, chỉ cần đặt WPTPS_IS_PRETTY_LOGOUT_ENABLED= false.

Nếu bạn thay đổi giá trị WPTPS_IS_PRETTY_LOGOUT_ENABLEDthì bạn PHẢI đi tới Quản trị> Cài đặt> Permalinks và nhấn nút “Lưu thay đổi”. Điều này buộc WordPress phải thay đổi quá trình / tuôn ra đối với các quy tắc ghi lại URL.

Tất cả đã xong - hãy vui vẻ với trang web WordPress chỉ dành cho thành viên mới của bạn!