¿Deshabilitar la interfaz para usar solo como CMS?


18

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

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

¿Cuál sería la mejor manera de restringir que alguien acceda al sitio de WordPress de configuración en lugar de * 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/).

Respuestas:


19

Para asegurarse de que solo el front-end redirecciona domain.com, cree un tema que use la función de encabezado PHP ().

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

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

  • En index.phpagregar esto:

    encabezado ("Ubicación: http://dominio.com ");

  • Cargue la carpeta en el directorio de temas y luego actívela en la interfaz de usuario del administrador.

Es gracioso porque esa luz se apagó en mi cabeza. ¡Por qué no simplemente hacer un tema que redirija! Gracias.
— Nick Bedford

1
puede ser obvio para algunos, pero esto solo funcionó para mí cuando la primera línea de index.php fue<?php
— finsbury

8

Use un tema con "datos vacíos". Ponga 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:
*/

e index.php

<?php
exit;

Me gusta esta solución, de esta manera puedes volver fácilmente a un tema de trabajo completo. Además, puede agregar algo como en <?php wp_redirect(site_url('wp-admin'));die();lugar de salir para redirigir automáticamente a un recurso determinado.
— MiCc83

3

Ponga esto en su .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]

2

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 podría permitirse verlo con una simple verificación de IP.


Esto tiene un efecto secundario que /wordpress/wp-adminahora redirige a//wp-admin
— Nick Bedford

1

Aunque esta es una pregunta bastante antigua con una respuesta ya aceptada, alguien podría encontrarla útil, especialmente porque 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:

  • ejecutar la verificación en el gancho 'init'
  • compruebe si la página que estamos cargando es front-end (no wp-admin)
  • redirigir al back end (wp-admin)

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

EDITAR:

Si esto no funciona para usted (tuve problemas menores incluso con este código), puede crear un nuevo tema (o un tema secundario) y poner solo este contenido dentro del header.phparchivo:

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

0

En mi opinión, 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');
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.