Pregunta

Estoy usando la base de datos de WordPress y el back -end para administrar las noticias para el sitio web de mi banda y todo funciona muy bien, sin embargo, me gustaría deshabilitar la parte delantera de WordPress.

Tengo la instalación de WordPress instalada en /wordpress/ Y obviamente la sección de administración está debajo /wordpress/wp-admin/.

¿Cuál sería la mejor manera de restringir a alguien acceder al sitio de WordPress de WordPress más bien *Un *sin afectar la sección de administración?

En todo caso, podría simplemente redirigir a la página de inicio adecuada del sitio web (domain.com/).

¿Fue útil?

Solución

Para asegurarse de que solo la parte delantera redirige a domain.com, haga un tema que use la función PHP Header ().

  • Cree una carpeta llamada redirección o algo así.
  • Agregue dos archivos a la carpeta: style.css y index.php(necesario para un tema WP válido)
  • En style.css, agregue algo como esto:

    /*
    Nombre del tema: Redirección
    Descripción: Redirige el front -end a Domain.com
    */

  • En index.php Agrega esto:

    Encabezado ("Ubicación: http://domain.com" );

  • Cargue la carpeta en el directorio de temas y luego activela en la interfaz de usuario de administración.

Otros consejos

Use un tema con "datos vacíos". Coloque dos archivos en el directorio, luego active "tema".

style.css

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

y index.php

<?php
exit;

Pon esto en tu .htaccess y enumere las rutas que desea mantener disponibles:

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]

Agregue esto al .htaccess en su directorio raíz

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

Editar: esto es realmente solo una solución rápida, puede haber mejores soluciones. Otra forma sería agregar una función a su archivo functions.php, que luego se llama en wp_head () para redirigir de esa manera. Usando ese método, también puede permitirse verlo con una simple verificación de IP.

Aunque esta es una pregunta bastante antigua con una respuesta ya aceptada, alguien podría encontrar esto útil, especialmente ya que ninguna de estas soluciones funcionó para mí.

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

El código en sí es bastante explicativo:

  • Ejecute el cheque en el gancho 'init'
  • Compruebe si la página que estamos cargando es front-end (no WP-Admin)
  • Redirige al back-end (WP-Admin)

Simplemente coloque el código en cualquier complemento o la función del tema.php y debería funcionar fuera de la caja.

EDITAR:

Si esto no funciona para usted (tenía problemas menores incluso con este código), puede crear un nuevo tema (o un tema infantil) y poner solo este contenido dentro del header.php expediente:

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

OMI, un complemento requeriría menos trabajo y es más apropiado para el caso específico.

<?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');
}
Licenciado bajo: CC-BY-SA con atribución
scroll top