Desativar o front end para usar apenas como CMS?


18

Estou usando o banco de dados WordPress e o back-end para administrar as notícias do site da minha banda e tudo está funcionando muito bem, no entanto, gostaria de desativar o front-end do WordPress.

Eu tenho a instalação do WordPress instalada /wordpress/e, obviamente, a seção de administração está abaixo /wordpress/wp-admin/.

Qual seria a melhor maneira de impedir que alguém acesse o próprio site WordPress * un * setup sem afetar a seção de administração?

Se alguma coisa, eu poderia simplesmente redirecionar para a página inicial adequada do site ( domain.com/).

Respostas:


19

Para garantir que apenas o front end seja redirecionado domain.com, crie um tema que use a função header () do PHP.

  • Crie uma pasta chamada redirecionar ou algo assim.
  • Adicione dois arquivos à pasta: style.csse index.php (necessário para um tema WP válido)
  • Em style.css, adicione algo como isto:

    / *
    Nome do tema: Redirecionar
    Descrição: Redireciona o front end para domain.com
    * /

  • Em index.phpacrescentar o seguinte:

    cabeçalho ("Localização: http://domain.com ");

  • Carregue a pasta no diretório de temas e ative-a na interface do usuário do administrador.

É engraçado porque essa luz simplesmente se apagou na minha cabeça. Por que não fazer apenas um tema que redireciona! Obrigado.
— Nick Bedford

11
pode ser óbvio para alguns, mas isso só funcionou para mim quando a primeira linha do index.php foi<?php
— finsbury

8

Use um tema com "dados vazios". Coloque dois arquivos no diretório e ative o "tema".

style.css

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

e index.php

<?php
exit;

Eu gosto dessa solução, dessa maneira você pode facilmente voltar para um tema de trabalho completo. Além disso, você pode adicionar algo como, em <?php wp_redirect(site_url('wp-admin'));die();vez de sair, para redirecionar automaticamente para um determinado recurso.
— MiCc83

3

Coloque isso no seu .htaccess e liste os caminhos que você deseja manter disponíveis:

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

adicione isso ao .htaccess no diretório raiz

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

Edição: Esta é realmente apenas uma solução rápida, pode haver melhores soluções. Outra maneira seria adicionar uma função ao seu arquivo functions.php, que é chamado em wp_head () para redirecionar dessa maneira. Usando esse método, você também pode vê-lo com uma simples verificação de IP.


Isso tem um efeito colateral que /wordpress/wp-adminagora redireciona para//wp-admin
— Nick Bedford

1

Embora essa seja uma pergunta bastante antiga, com uma resposta já aceita, alguém pode achar isso útil, especialmente porque nenhuma dessas soluções funcionou para mim.

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

O código em si é bastante explicativo:

  • execute a verificação no gancho 'init'
  • verifique se a página que estamos carregando é front end (não wp-admin)
  • redirecionar para back-end (wp-admin)

Basta colocar o código em qualquer plug-in ou no function.php do tema e ele deve funcionar imediatamente.

EDITAR:

Se isso não funcionar para você (eu tive problemas menores, mesmo com esse código), você pode criar um novo tema (ou um tema filho) e colocar apenas esse conteúdo dentro do header.phparquivo:

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

0

Na IMO, um plug-in exigiria menos trabalho e é mais apropriado para o 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');
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.