Domanda

Sto utilizzando il database di WordPress e back-end per amministrare la notizia per il sito web della mia band e tutto funziona ottima, tuttavia mi piacerebbe disattivare il front-end di WordPress per sé.

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

Quale sarebbe il modo migliore per limitare l'accesso a qualcuno piuttosto * un * sito di installazione di WordPress per sé senza influenzare la sezione di amministrazione?

Se non altro, ho potuto semplicemente reindirizzare alla corretta home page del sito web (domain.com/).

È stato utile?

Soluzione

Per assicurarsi che solo i reindirizzamenti front-end per domain.com, fare una che utilizza la funzione di intestazione PHP () a tema.

  • Crea una cartella chiamata reindirizzamento o qualcosa.
  • Aggiungere due file al cartella: style.css e index.php (Necessario per un tema WP valido)
  • In style.css, aggiungere qualcosa di simile in questo modo:

    / *
    Nome Tema: Redirect
    Descrizione: reindirizza il front-end per domain.com
    * /

  • In index.php aggiungere questo:

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

  • Carica la cartella nella directory di temi e poi attivarlo nell'interfaccia utente di amministrazione.

Altri suggerimenti

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

style.css

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

e index.php

<?php
exit;

Mettere questo nel vostro .htaccess ed elencare i percorsi che si desidera conservare a disposizione:

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]

aggiungere questo al .htaccess nella directory principale

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

EDIT: Questo è in realtà solo una soluzione rapida, ci potrebbero essere soluzioni migliori. Un altro modo sarebbe quello di aggiungere una funzione al file functions.php, che viene poi chiamato a wp_head () per reindirizzare in quel modo. Utilizzando questo metodo si potrebbe anche permettere a voi stessi di visualizzare con un semplice controllo IP.

Anche se questa è una domanda piuttosto vecchio, con una risposta già accettato, qualcuno potrebbe rivelarsi utile, specialmente dal momento che nessuna di queste soluzioni ha lavorato 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 gancio 'init'
  • verifica se la pagina siamo di carico è di front-end (non wp-admin)
  • redirect al back-end (wp-admin)

Basta mettere il codice in alcun plugin o function.php del tema e dovrebbe funzionare out of the box.

Modifica

Se questo non funziona per voi (ho avuto problemi minori, anche con questo codice), è possibile creare un nuovo tema (o un tema bambino) e solo mettere questo contenuto all'interno del file header.php:

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

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');
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top