Vô hiệu hóa giao diện người dùng để chỉ sử dụng như CMS?


18

Tôi đang sử dụng cơ sở dữ liệu WordPress và back end để quản lý tin tức cho trang web của ban nhạc của tôi và mọi thứ đều hoạt động tốt tuy nhiên tôi muốn vô hiệu hóa giao diện người dùng của chính WordPress.

Tôi đã cài đặt WordPress và cài đặt /wordpress/phần quản trị viên /wordpress/wp-admin/.

Điều gì sẽ là cách tốt nhất để hạn chế ai đó truy cập vào trang web WordPress khá * un * mà không ảnh hưởng đến phần quản trị viên?

Nếu có bất cứ điều gì, tôi chỉ có thể chuyển hướng đến trang chủ thích hợp của trang web ( domain.com/).

Câu trả lời:


19

Để đảm bảo chỉ có giao diện người dùng chuyển hướng đến domain.com, hãy tạo một chủ đề sử dụng hàm tiêu đề () của PHP.

  • Tạo một thư mục gọi là redirect hoặc một cái gì đó.
  • Thêm hai tệp vào thư mục: style.cssindex.php (cần thiết cho một chủ đề WP hợp lệ)
  • Trong style.css, thêm một cái gì đó như thế này:

    / *
    Tên chủ đề: Chuyển hướng
    Mô tả: Chuyển hướng giao diện người dùng sang domain.com
    * /

  • Trong index.phpthêm này:

    tiêu đề ("Vị trí: http://domain.com ");

  • Tải thư mục lên thư mục chủ đề và sau đó kích hoạt nó trong giao diện người dùng quản trị viên.

Thật buồn cười vì ánh sáng vừa tắt trong đầu tôi. Tại sao không chỉ làm một chủ đề mà chuyển hướng! Cảm ơn.
Nick Bedford

1
có thể rõ ràng với một số người nhưng điều này chỉ hiệu quả với tôi khi dòng đầu tiên của index.php là<?php
finsbury

8

Sử dụng một chủ đề với "dữ liệu trống". Đặt hai tệp trong thư mục, sau đó kích hoạt "chủ đề".

style.css

/*
Theme Name: turn off frontend
Theme URI: 
Description: 
Author: 
Version: 
License: GNU 
License URI: 
Tags:
*/

index.php

<?php
exit;

Tôi thích giải pháp này, theo cách này bạn có thể dễ dàng chuyển trở lại một chủ đề làm việc đầy đủ. Ngoài ra, bạn có thể thêm một cái gì đó như <?php wp_redirect(site_url('wp-admin'));die();thay vì thoát để tự động chuyển hướng đến một tài nguyên nhất định.
MiCc83

3

Đặt cái này trong .htaccess của bạn và liệt kê các đường dẫn bạn muốn giữ sẵn:

RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-includes
RewriteCond %{REQUEST_URI} !^/wp-login
RewriteCond %{REQUEST_URI} !^/wp-content/uploads
RewriteCond %{REQUEST_URI} !^/wp-content/plugins
RewriteCond %{REQUEST_URI} !^/wp-content/cache
RewriteRule (.*) http://yournewdomain.com/ [R=301,L]

2

thêm phần này vào .htaccess trong thư mục gốc của bạn

redirect 301 /wordpress http://www.domain.com

EDIT: Đây thực sự chỉ là một sửa chữa nhanh chóng, có thể có giải pháp tốt hơn. Một cách khác là thêm một hàm vào tệp tin.php của bạn, sau đó được gọi trong wp_head () để chuyển hướng theo cách đó. Sử dụng phương pháp đó bạn cũng có thể cho phép mình xem nó bằng một kiểm tra IP đơn giản.


Điều này có tác dụng phụ mà /wordpress/wp-adminbây giờ chuyển hướng đến//wp-admin
Nick Bedford

1

Mặc dù đây là một câu hỏi khá cũ với câu trả lời đã được chấp nhận, nhưng ai đó có thể thấy điều này hữu ích, đặc biệt vì không có giải pháp nào trong số này có hiệu quả với tôi.

function redirect_to_backend() {
    if( !is_admin() ) {
        wp_redirect( site_url('wp-admin') );
        exit();
    }
}
add_action( 'init', 'redirect_to_backend' );

Bản thân mã này là khá lý giải:

  • chạy kiểm tra trên móc 'init'
  • kiểm tra xem trang chúng tôi đang tải có phải là giao diện người dùng không (không phải wp-admin)
  • chuyển hướng đến back end (wp-admin)

Chỉ cần đặt mã vào bất kỳ plugin hoặc function.php của chủ đề và nó sẽ hoạt động tốt.

CHỈNH SỬA:

Nếu điều này không hiệu quả với bạn (tôi gặp vấn đề nhỏ ngay cả với mã này), bạn có thể tạo một chủ đề mới (hoặc một chủ đề con) và chỉ đặt nội dung này trong header.phptệp:

<?php
header("Location: ".get_admin_url());
exit();

0

IMO, một plugin sẽ yêu cầu ít công việc hơn và phù hợp hơn cho trường hợp cụ thể.

<?php
/*
Plugin Name: Disalbe Frontend
Description:  Disable the frontend interface of the website, leave only CMS and REST API
Author: Nikola Mihyalov
Version: 1.0
*/

add_action('init', 'redirect_to_backend');

function redirect_to_backend() {
    if(
        !is_admin() &&
        !is_wplogin() &&
        !is_rest()
    ) {
    wp_redirect(site_url('wp-admin'));
    exit();
  }
}


if (!function_exists('is_rest')) {
    /**
     * Checks if the current request is a WP REST API request.
     * 
     * Case #1: After WP_REST_Request initialisation
     * Case #2: Support "plain" permalink settings
     * Case #3: URL Path begins with wp-json/ (your REST prefix)
     *          Also supports WP installations in subfolders
     * 
     * @returns boolean
     * @author matzeeable
     */
    function is_rest() {
        $prefix = rest_get_url_prefix( );
        if (defined('REST_REQUEST') && REST_REQUEST // (#1)
            || isset($_GET['rest_route']) // (#2)
                && strpos( trim( $_GET['rest_route'], '\\/' ), $prefix , 0 ) === 0)
            return true;

        // (#3)
        $rest_url = wp_parse_url( site_url( $prefix ) );
        $current_url = wp_parse_url( add_query_arg( array( ) ) );
        return strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
    }
}

function is_wplogin(){
    $ABSPATH_MY = str_replace(array('\\','/'), DIRECTORY_SEPARATOR, ABSPATH);
    return ((in_array($ABSPATH_MY.'wp-login.php', get_included_files()) || in_array($ABSPATH_MY.'wp-register.php', get_included_files()) ) || (isset($_GLOBALS['pagenow']) && $GLOBALS['pagenow'] === 'wp-login.php') || $_SERVER['PHP_SELF']== '/wp-login.php');
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.