ปิดการใช้งานส่วนหน้าเพื่อใช้เป็น CMS เท่านั้น?


18

ฉันใช้ฐานข้อมูลเวิร์ดเพรสและแบ็คเอนด์เพื่อจัดการข่าวสำหรับเว็บไซต์วงดนตรีของฉันและทุกอย่างทำงานได้ดี แต่ฉันต้องการปิดการใช้งานส่วนหน้าของเวิร์ดเพรสเอง

ผมได้ติดตั้ง WordPress ที่ติดตั้งในและเห็นได้ชัดส่วนผู้ดูแลระบบที่อยู่ภายใต้/wordpress//wordpress/wp-admin/

อะไรจะเป็นวิธีที่ดีที่สุดในการ จำกัด บางคนไม่ให้เข้าถึงการตั้งค่า WordPress ของเว็บไซต์ที่ไม่มีการตั้งค่าเองโดยไม่ส่งผลต่อส่วนของผู้ดูแลระบบ

หากมีอะไรฉันก็สามารถเปลี่ยนเส้นทางไปยังหน้าแรกของเว็บไซต์ที่เหมาะสม ( domain.com/)

คำตอบ:


19

เพื่อให้แน่ใจว่าเฉพาะส่วนหน้าเท่านั้นที่เปลี่ยนเส้นทางให้domain.comสร้างชุดรูปแบบที่ใช้ฟังก์ชันส่วนหัวของ PHP ()

  • สร้างโฟลเดอร์ที่เรียกว่าการเปลี่ยนเส้นทางหรืออะไรบางอย่าง
  • เพิ่มสองไฟล์ไปยังโฟลเดอร์: style.cssและindex.php (จำเป็นสำหรับธีม WP ที่ถูกต้อง)
  • ในstyle.cssเพิ่มสิ่งนี้:

    / *
    ชื่อธีม: การเปลี่ยนเส้นทาง
    คำอธิบาย: เปลี่ยนเส้นทางส่วนหน้าไปยัง domain.com
    * /

  • ในการindex.phpเพิ่มนี้:

    ส่วนหัว ("สถานที่ตั้ง: http://domain.com ");

  • อัพโหลดโฟลเดอร์ไปยังไดเร็กทอรี themes จากนั้นเปิดใช้งานใน UI ผู้ดูแลระบบ

มันเป็นเรื่องตลกที่แสงเข้ามาในหัวของฉัน ทำไมไม่เพียงแค่สร้างธีมที่เปลี่ยนเส้นทาง! ขอบคุณ
Nick Bedford

1
อาจเห็นได้ชัดสำหรับบางคน แต่สิ่งนี้ใช้ได้เฉพาะกับฉันเมื่อบรรทัดแรกของ index.php คือ<?php
finsbury

8

ใช้ชุดรูปแบบด้วย "ข้อมูลที่ว่างเปล่า" วางสองไฟล์ในไดเรกทอรีจากนั้นเปิดใช้งาน "ชุดรูปแบบ"

style.css

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

และindex.php

<?php
exit;

ฉันชอบโซลูชันนี้ด้วยวิธีนี้คุณสามารถเปลี่ยนกลับไปเป็นธีมที่ใช้งานได้ง่าย นอกจากนี้คุณสามารถเพิ่มสิ่งที่ต้องการ<?php wp_redirect(site_url('wp-admin'));die();แทนออกเพื่อเปลี่ยนเส้นทางไปยังทรัพยากรที่กำหนดโดยอัตโนมัติ
MiCc83

3

วางสิ่งนี้ลงใน. htaccess ของคุณและทำรายการเส้นทางที่คุณต้องการให้มีอยู่:

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

เพิ่มสิ่งนี้ใน. htaccess ในไดเรกทอรีรากของคุณ

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

แก้ไข: นี่เป็นเพียงการแก้ไขอย่างรวดเร็วจริง ๆ อาจมีวิธีแก้ไขปัญหาที่ดีกว่า อีกวิธีหนึ่งคือการเพิ่มฟังก์ชั่นให้กับไฟล์ functions.php ของคุณซึ่งจะถูกเรียกใน wp_head () เพื่อเปลี่ยนเส้นทางด้วยวิธีดังกล่าว การใช้วิธีการนั้นคุณสามารถอนุญาตให้คุณดูด้วยการตรวจสอบ IP อย่างง่าย


นี่เป็นผลข้างเคียงที่/wordpress/wp-adminเปลี่ยนไปตอนนี้//wp-admin
Nick Bedford

1

แม้ว่านี่จะเป็นคำถามที่ค่อนข้างเก่าที่มีคำตอบที่ยอมรับแล้ว แต่บางคนอาจพบว่ามีประโยชน์นี้เป็นพิเศษเนื่องจากไม่มีวิธีแก้ปัญหาเหล่านี้สำหรับฉัน

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

โค้ดเองนั้นค่อนข้างอธิบายได้:

  • เรียกใช้การตรวจสอบในเบ็ด 'init'
  • ตรวจสอบว่าหน้าที่เรากำลังโหลดนั้นเป็นส่วนหน้า (ไม่ใช่ wp-admin)
  • เปลี่ยนเส้นทางไปยังส่วนหลังสุด (wp-admin)

เพียงแค่ใส่รหัสในปลั๊กอินหรือ function.php ของชุดรูปแบบและควรทำงานนอกกรอบ

แก้ไข:

หากสิ่งนี้ไม่ได้ผลสำหรับคุณ (ฉันมีปัญหาเล็กน้อยแม้จะใช้รหัสนี้) คุณสามารถสร้างชุดรูปแบบใหม่ (หรือชุดรูปแบบลูก) และใส่เนื้อหานี้ไว้ในheader.phpไฟล์เท่านั้น:

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

0

IMO ซึ่งเป็นปลั๊กอินจะต้องใช้งานน้อยลงและเหมาะสมกว่าสำหรับกรณีเฉพาะ

<?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');
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.