web-dev-qa-db-fra.com

Désactiver le terminal pour utiliser uniquement le système de gestion de contenu?

J'utilise la base de données WordPress et le back-end pour administrer les nouvelles pour le site Web de mon groupe et tout fonctionne très bien, mais j'aimerais désactiver le frontal de WordPress lui-même.

J'ai l'installation de WordPress installée dans /wordpress/ et, évidemment, la section admin est sous /wordpress/wp-admin/.

Quel serait le meilleur moyen d'empêcher quelqu'un d'accéder au site WordPress plutôt * un * d'installation lui-même sans affecter la section admin?

Au mieux, je pourrais simplement rediriger vers la page d'accueil appropriée du site Web (domain.com/).

16
Nick Bedford

Pour vous assurer que seules les redirections frontales vers domain.com, créez un thème utilisant la fonction PHP header ().

  • Créez un dossier appelé redirect ou quelque chose.
  • Ajoutez deux fichiers au dossier: style.css et index.php (nécessaire pour un thème WP valide).
  • Dans style.css, ajoutez quelque chose comme ceci:

    / *
    Nom du thème: Redirect
    Description: redirige le serveur vers domain.com.
    * /

  • Dans index.php, ajoutez ceci:

    en-tête ("Emplacement: http://domain.com ");

  • Téléchargez le dossier dans le répertoire themes, puis activez-le dans l'interface utilisateur d'administration.
16
Corey McKrill

Utilisez un thème avec "données vides". Mettez deux fichiers dans le répertoire, puis activez "thème".

style.css

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

et index.php

<?php
exit;
7
Marcin

Mettez ceci dans votre .htaccess et dressez la liste des chemins que vous voulez garder 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
Ben Rogmans

ajoutez ceci au .htaccess dans votre répertoire racine

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

EDIT: Ceci est vraiment juste une solution rapide, il pourrait y avoir de meilleures solutions. Une autre méthode consiste à ajouter une fonction à votre fichier functions.php, qui est ensuite appelée dans wp_head () pour rediriger de cette façon. En utilisant cette méthode, vous pouvez également vous permettre de la visualiser avec un simple contrôle IP.

1
supajb

Bien que ce soit une question plutôt ancienne avec une réponse déjà acceptée, cela pourrait être utile à quelqu'un, d'autant plus qu'aucune de ces solutions ne fonctionnait pour moi.

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

Le code lui-même est assez explicatif:

  • lancez la vérification sur le crochet 'init'
  • vérifie si la page que nous chargeons est front-end (pas wp-admin)
  • redirection vers le back-end (wp-admin)

Il suffit de mettre le code dans n’importe quel plugin ou dans le fichier function.php du thème et il devrait fonctionner immédiatement.

MODIFIER:

Si cela ne fonctionne pas pour vous (j'ai eu des problèmes mineurs même avec ce code), vous pouvez créer un nouveau thème (ou un thème enfant) et ne mettre que ce contenu dans le fichier header.php:

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

IMO, un plugin nécessiterait moins de travail et conviendrait mieux à un cas particulier.

<?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');
}
0
nikksan