Вимкнути передню частину для використання лише як CMS?


18

Я використовую базу даних WordPress і зворотній кінець, щоб адмініструвати новини для веб-сайту моєї групи, і все працює чудово, проте я хотів би відключити передню частину WordPress.

У мене встановлена ​​установка WordPress, /wordpress/і, очевидно, знаходиться розділ адміністратора /wordpress/wp-admin/.

Який був би найкращий спосіб заборонити комусь отримати доступ до власного сайту WordPress з налаштуваннями * un *, не впливаючи на розділ адміністратора?

Якщо що, я можу просто перенаправити на належну домашню сторінку веб-сайту ( domain.com/).

Відповіді:


19

Щоб переконатися, що тільки передні переадресації domain.com, створіть тему, яка використовує функцію PHP header ().

  • Створіть папку під назвою переадресація чи щось.
  • Додайте до папки два файли: style.cssі index.php (необхідні для дійсної теми WP)
  • В style.css, додати що - щось на зразок цього:

    / *
    Назва теми: Переадресація
    Опис: Перенаправляє передню частину на domain.com
    * /

  • В index.phpдодати наступне:

    заголовок ("Розташування: http://domain.com ");

  • Завантажте папку в каталог тем, а потім активуйте її в інтерфейсі адміністратора.

Дивно, що світло просто згасло в моїй голові. Чому б просто не зробити тему, яка переспрямовує! Спасибі.
Нік Бедфорд

1
Для <?php
когось

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

EDIT: Це дійсно лише швидке виправлення, можуть бути кращі рішення. Іншим способом було б додати функцію у файл function.php, який потім викликається в wp_head (), щоб перенаправити цей шлях. Використовуючи цей метод, ви також можете дозволити собі переглянути його за допомогою простої перевірки IP-адреси.


Це має побічний ефект, який /wordpress/wp-adminтепер переспрямовує на//wp-admin
Нік Бедфорд,

1

Хоча це досить старе запитання з уже прийнятою відповіддю, хтось може вважати це корисним, тим більше, що жодне з цих рішень не працювало на мене.

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

Сам код досить пояснювальний:

  • запустіть чек на гачок "init"
  • перевірте, чи сторінка, яку ми завантажуємо, є лицьовою стороною (не wp-адміністратором)
  • переадресація на задній край (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');
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.