Dezactivare front-end WordPress pentru utilizare doar ca CMS

23 mai 2011, 08:39:49
Vizualizări: 28.2K
Voturi: 31

Folosesc baza de date WordPress și back-end-ul pentru a administra știrile pentru site-ul web al trupei mele și totul funcționează excelent, însă aș dori să dezactivez front-end-ul WordPress-ului.

Am instalarea WordPress în /wordpress/ și evident secțiunea de administrare este sub /wordpress/wp-admin/.

Care ar fi cea mai bună metodă de a restricționa accesul cuiva la site-ul WordPress care nu este configurat, fără a afecta secțiunea de administrare?

Dacă e necesar, aș putea pur și simplu să redirecționez către pagina principală corectă a site-ului (domain.com/).

0
Toate răspunsurile la întrebare 8
4
31

Pentru a vă asigura că doar front-end-ul redirecționează către domain.com, creați o temă care utilizează funcția PHP header().

  • Creați un director numit redirect sau altceva similar.

  • Adăugați două fișiere în director: style.css și index.php (necesare pentru o temă WP validă)

  • În style.css, adăugați ceva de genul:

    /*  
       Nume temă: Redirect  
       Descriere: Redirecționează front-end-ul către domain.com  
    */
    
  • În index.php adăugați acest cod:

    <?php
         header( "Location: http://domain.com" );
    ?>  
    
  • Încărcați directorul în directorul de teme și apoi activați-l în interfața de administrare.

23 mai 2011 10:16:04
Comentarii

E amuzant pentru că tocmai mi-a dat becul în cap. De ce să nu faci o temă care doar redirecționează! Mersi.

Nick Bedford Nick Bedford
23 mai 2011 12:18:48

poate fi evident pentru unii, dar a funcționat pentru mine doar când prima linie din index.php era <?php

finsbury finsbury
14 mar. 2019 13:41:43

Această metodă funcționează pentru instalări simple, dar când configurezi o rețea multisite, nu merge.

Shahriar Shahriar
17 aug. 2021 22:02:32

Aceasta funcționează pentru o rețea multisite: https://wordpress.stackexchange.com/a/52994/112498

Shahriar Shahriar
17 aug. 2021 22:39:41
1
12

Folosește o temă cu "date goale". Pune două fișiere în director, apoi activează "tema".

style.css

/*
Nume Tema: dezactivează frontend
URL Tema: 
Descriere: 
Autor: 
Versiune: 
Licență: GNU 
URL Licență: 
Etichete:
*/

și index.php

<?php
exit;
23 mai 2011 09:58:19
Comentarii

Îmi place această soluție, în acest fel poți reveni ușor la o temă funcțională completă. Mai mult, poți adăuga ceva de genul <?php wp_redirect(site_url('wp-admin'));die(); în loc de exit pentru a redirecționa automat către o resursă specificată.

Alessandro Benoit Alessandro Benoit
15 ian. 2016 10:45:52
1

Deși aceasta este o întrebare destul de veche cu un răspuns deja acceptat, cineva ar putea găsi acest lucru util, mai ales deoarece niciuna dintre aceste soluții nu a funcționat pentru mine.

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

Codul în sine este destul de explicativ:

  • rulează verificarea pe hook-ul 'init'
  • verifică dacă pagina pe care o încărcăm este front end (nu wp-admin)
  • redirecționează către back end (wp-admin)

Doar puneți codul în orice plugin sau în fișierul functions.php al temei și ar trebui să funcționeze imediat.

EDIT:

Dacă acest lucru nu funcționează pentru dvs. (am avut probleme minore chiar și cu acest cod), puteți crea o temă nouă (sau o temă copil) și puneți doar acest conținut în fișierul header.php:

<?php
header("Location: ".get_admin_url());
exit();
1 apr. 2017 02:30:24
Comentarii

De remarcat, acest lucru redirecționează și atunci când încerci să accesezi pagina de login. Schimbarea !is_admin() în !is_admin() && !is_login() a funcționat pentru mine.

Niels Abildgaard Niels Abildgaard
12 sept. 2023 15:04:01
0

Introduceți acest cod în fișierul .htaccess și enumerați căile pe care doriți să le păstrați accesibile:

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://domeniultau.ro/ [R=301,L]
27 sept. 2013 12:49:25
0

IMO, un plugin ar necesita mai puțină muncă și este mai potrivit pentru cazul specific.

<?php
/*
Plugin Name: Dezactivează Frontend
Description: Dezactivează interfața frontală a site-ului, lasă doar CMS-ul și REST API
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')) {
    /**
     * Verifică dacă cererea curentă este o cerere către WP REST API.
     * 
     * Cazul #1: După inițializarea WP_REST_Request
     * Cazul #2: Suportă setările de permalink "simplu"
     * Cazul #3: Calea URL începe cu wp-json/ (prefixul tău REST)
     *          De asemenea, suportă instalări WP în subfoldere
     * 
     * @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');
}
24 mar. 2019 13:44:34
1

adaugă acest lucru în fișierul .htaccess din directorul rădăcină

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

EDITARE: Aceasta este doar o soluție rapidă, pot exista soluții mai bune. O altă metodă ar fi să adaugi o funcție în fișierul functions.php, care este apoi apelată în wp_head() pentru a face redirecționarea în acest fel. Folosind această metodă, ai putea de asemenea să-ți permiți să vizualizezi conținutul printr-o simplă verificare a adresei IP.

23 mai 2011 08:47:45
Comentarii

Acest lucru are un efect secundar, și anume că /wordpress/wp-admin acum redirecționează către //wp-admin

Nick Bedford Nick Bedford
23 mai 2011 08:53:28
0

Construiesc un site Gatsby cu GraphQL, folosind WordPress ca un CMS headless. Nu mi-a plăcut ideea ca cineva să ajungă din întâmplare pe interfața de administrare WordPress și să încerce să găsească modalități de a intra, așa că am urmat instrucțiunile lui @Marcin (vezi mai sus), adică am creat:

  • un folder pentru o nouă temă (l-am numit turn-off-frontend conform sugestiei lui @Marcin) și în interiorul acestuia am plasat:
  • un fișier style.css (folosind codul implicit al lui @Marcin) și un
  • fișier index.php

În interiorul index.php am urmat sugestiile lui @dev_masta, dar le-am modificat ușor:

  1. Nu am pus codul în header.php - nu am creat acest fișier - ci l-am pus direct în index.php.
  2. Nu am vrut ca redirecționarea să meargă către /wp-login.php din WordPress. În schimb, am dorit să meargă către site-ul meu Gatsby:

Evident, acesta este mediul de dezvoltare Gatsby și va trebui să fie schimbat cu URL-ul corect atunci când site-ul va fi lansat.

    //index.php
    <?php
    /* Redirecționează browserul */
    header("Location: http://localhost:8000");
    exit;

Am încărcat tema turn-off-frontend în wp-content/themes, am activat-o și a funcționat. Când am accesat URL-ul WordPress, am fost redirecționat direct către site-ul meu Gatsby. Totuși, când m-am întors în administrarea WordPress > Aspect pentru a edita meniul, link-ul 'Meniuri' dispăruse!

Pentru a rezolva această problemă, am creat un fișier functions.php în interiorul temei turn-off-frontend și am adăugat următorul cod (din Wordpress Codex):

   //functions.php
   <?php
   function register_my_menu() {
      register_nav_menu('header-menu',__( 'Header Menu' ));
    }
    add_action( 'init', 'register_my_menu' );

Și meniul a devenit din nou disponibil pentru adăugarea de pagini și articole.

Sper că acest lucru va fi util cuiva.

7 mar. 2022 15:15:11
0
Dacă dorești să păstrezi funcțional API-ul REST, folosește acest cod în index.php:

<?php
/**
 * Frontend pentru aplicația WordPress. Acest fișier nu face nimic, dar încarcă
 * wp-blog-header.php care face acest lucru și îi spune WordPress să încarce tema.
 *
 * @package WordPress
 */

/**
 * Specifică WordPress să încarce tema și să o afișeze.
 *
 * @var bool
 */
define( 'WP_USE_THEMES', false );

/** Încarcă mediul WordPress și șablonul */
require __DIR__ . '/wp-blog-header.php';
11 dec. 2020 13:42:00