Kullanıcı arabirimi yalnızca CMS olarak kullanmak için devre dışı bırakılsın mı?


19

Grubumun web sitesi için haberleri yönetmek için WordPress veritabanını ve arka ucunu kullanıyorum ve her şey harika çalışıyor, ancak WordPress'in ön ucunu devre dışı bırakmak istiyorum.

WordPress kurulumunu yükledim /wordpress/ve açıkçası yönetici bölümü altında /wordpress/wp-admin/.

Birisinin yönetici bölümünü etkilemeden oldukça * un * kurulum WordPress sitesine erişmesini kısıtlamanın en iyi yolu ne olabilir?

Bir şey olursa, web sitesinin uygun ana sayfasına ( domain.com/) yönlendirebilirim.

Yanıtlar:


19

Yalnızca ön ucun yönlendirme yaptığından emin olmak domain.comiçin PHP header () işlevini kullanan bir tema oluşturun.

  • Yönlendirme veya benzeri bir klasör oluşturun.
  • Klasöre iki dosya ekleyin: style.cssveindex.php (geçerli bir WP teması için gerekli)
  • İçinde style.css , buna benzer bir şey ekleyin:

    / *
    Tema Adı: Yönlendirme
    Açıklama: Kullanıcı arabirimini domain.com'a yönlendirir
    * /

  • İçinde index.php ekleyin:

    başlık ("Konum: http://domain.com ");

  • Klasörü temalar dizinine yükleyin ve ardından yönetici kullanıcı arayüzünde etkinleştirin.

Komik çünkü ışık kafamda söndü. Neden sadece yönlendiren bir tema oluşturmuyoruz! Teşekkürler.
Nick Bedford

1
bazıları için açık olabilir ama bu sadece benim için çalıştı index.php<?php
finsbury

8

"Boş veriler" içeren bir tema kullanın. İki dosyayı dizine koyun, ardından "temayı" etkinleştirin.

style.css

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

ve index.php

<?php
exit;

Bu çözümü beğendim, bu şekilde tam bir çalışma temasına kolayca geri dönebilirsiniz. Ayrıca <?php wp_redirect(site_url('wp-admin'));die();belirli bir kaynağa otomatik olarak yeniden yönlendirme yapmak için çıkış yerine bir şey ekleyebilirsiniz .
MiCc83

3

Bunu .htaccess'inize koyun ve kullanılabilir tutmak istediğiniz yolları listeleyin:

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

bunu kök dizininizdeki .htaccess dosyasına ekleyin

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

EDIT: Bu gerçekten hızlı bir düzeltme, daha iyi çözümler olabilir. Başka bir yol da function.php dosyanıza bir işlev eklemektir; bu işlev daha sonra bu şekilde yeniden yönlendirmek için wp_head () olarak adlandırılır. Bu yöntemi kullanarak, basit bir IP kontrolü ile de görüntülemenize izin verebilirsiniz.


Bu, /wordpress/wp-adminartık yönlendiren bir yan etkiye sahiptir//wp-admin
Nick Bedford

1

Bu, zaten kabul edilmiş bir cevabı olan oldukça eski bir soru olsa da, özellikle bu çözümlerin hiçbiri benim için çalışmadığından biri bunu faydalı bulabilir.

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

Kodun kendisi oldukça açıklayıcı:

  • 'init' kancasında kontrolü çalıştırın
  • yüklediğimiz sayfanın ön uç olup olmadığını kontrol edin (wp-admin değil)
  • arka uca yönlendir (wp-admin)

Kodu herhangi bir eklentiye veya temanın function.php dosyasına koymanız ve kutunun dışında çalışması gerekir.

DÜZENLE:

Bu sizin için çalışmıyorsa (bu kodla bile küçük sorunlar yaşadım), yeni bir tema (veya alt tema) oluşturabilir ve yalnızca bu içeriği header.phpdosyanın içine koyabilirsiniz :

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

0

IMO, bir eklenti daha az çalışma gerektirir ve özel durum için daha uygundur.

<?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');
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.