Disabilitare il front-end da utilizzare solo come CMS?


18

Sto usando il database WordPress e il back-end per amministrare le notizie per il sito Web della mia band e tutto funziona alla grande, tuttavia mi piacerebbe disabilitare il front-end dello stesso WordPress.

Ho installato l'installazione di WordPress /wordpress/e ovviamente la sezione di amministrazione è sotto /wordpress/wp-admin/.

Quale sarebbe il modo migliore per impedire a qualcuno di accedere al sito WordPress piuttosto * un * senza influire sulla sezione di amministrazione?

Semmai, potrei semplicemente reindirizzare alla home page corretta del sito Web ( domain.com/).

Risposte:


19

Per assicurarti che solo il front-end reindirizzi domain.com, crea un tema che utilizza la funzione header () di PHP.

  • Crea una cartella chiamata reindirizzamento o qualcosa del genere.
  • Aggiungi due file alla cartella: style.csse index.php (necessario per un tema WP valido)
  • In style.css, aggiungi qualcosa del genere:

    / *
    Nome tema: reindirizzamento
    Descrizione: reindirizza il front-end a domain.com
    * /

  • In index.phpaggiungi questo:

    header ("Posizione: http://domain.com ");

  • Carica la cartella nella directory dei temi e quindi attivala nell'interfaccia utente dell'amministratore.

È divertente perché quella luce si è appena spenta nella mia testa. Perché non solo creare un tema che reindirizza! Grazie.
Nick Bedford,

1
per alcuni potrebbe essere ovvio, ma questo ha funzionato solo per me quando la prima riga di index.php era<?php
finsbury il

8

Usa un tema con "dati vuoti". Metti due file nella directory, quindi attiva "tema".

style.css

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

e index.php

<?php
exit;

Mi piace questa soluzione, in questo modo puoi tornare facilmente a un tema di lavoro completo. Inoltre puoi aggiungere qualcosa come <?php wp_redirect(site_url('wp-admin'));die();invece di exit per reindirizzare automaticamente a una determinata risorsa.
MiCc83,

3

Inserisci questo nel tuo .htaccess ed elenca i percorsi che vuoi mantenere disponibili:

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

aggiungilo a .htaccess nella tua directory principale

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

EDIT: Questa è davvero solo una soluzione rapida, potrebbero esserci soluzioni migliori. Un altro modo sarebbe quello di aggiungere una funzione al tuo file Functions.php, che viene quindi chiamato in wp_head () per reindirizzare in quel modo. Usando questo metodo potresti anche permetterti di vederlo con un semplice controllo IP.


Questo ha un effetto collaterale che /wordpress/wp-adminora reindirizza a//wp-admin
Nick Bedford

1

Sebbene questa sia una domanda piuttosto vecchia con una risposta già accettata, qualcuno potrebbe trovarla utile, soprattutto perché nessuna di queste soluzioni ha funzionato per me.

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

Il codice stesso è piuttosto esplicativo:

  • eseguire il controllo sul hook "init"
  • controlla se la pagina che stiamo caricando è front-end (non wp-admin)
  • reindirizzare al back-end (wp-admin)

Basta inserire il codice in qualsiasi plugin o nella funzione.php del tema e dovrebbe funzionare immediatamente.

MODIFICARE:

Se questo non funziona per te (ho avuto problemi minori anche con questo codice), puoi creare un nuovo tema (o un tema figlio) e inserire solo questo contenuto all'interno del header.phpfile:

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

0

IMO, un plugin richiederebbe meno lavoro ed è più appropriato per il caso specifico.

<?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');
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.