私は自分のバンドのウェブサイトのニュースを管理するためにWordPressデータベースとバックエンドを使っていますが、WordPress自体のフロントエンドを無効にしたいのですが、すべてうまくいっています。
私はWordPressのインストールを/wordpress/
にインストールしており、明らかにadminセクションは/wordpress/wp-admin/
の下にあります。
Adminセクションに影響を与えずに、誰かが「un un setup」WordPressサイト自体にアクセスするのを制限するための最善の方法は何でしょうか。
どちらかといえば、私は単にウェブサイトの適切なホームページ(domain.com/
)にリダイレクトすることができます。
フロントエンドのみがdomain.com
にリダイレクトされるようにするには、PHP header()関数を使用するテーマを作成します。
style.css
とindex.php
(有効なWPテーマに必要)style.css
に、このようなものを追加してください。
/ *
テーマ名:リダイレクト
説明:フロントエンドをdomain.comにリダイレクトします
* /
index.php
にこれを追加します。
header( "Location: http://domain.com ");
「空のデータ」のテーマを使用してください。ディレクトリに2つのファイルを置き、そして「テーマ」を有効にします。
style.css
/*
Theme Name: turn off frontend
Theme URI:
Description:
Author:
Version:
License: GNU
License URI:
Tags:
*/
そして index.php
<?php
exit;
これをあなたの.htaccessファイルに入れて、利用したいパスをリストアップしてください。
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]
これをルートディレクトリの.htaccessに追加してください。
redirect 301 /wordpress http://www.domain.com
編集:これは本当に簡単な解決策です、より良い解決策があるかもしれません。もう1つの方法は、functions.phpファイルに関数を追加し、それをwp_head()で呼び出してそのようにリダイレクトすることです。その方法を使用すると、簡単なIPチェックで自分自身でそれを表示できるようになります。
これはすでに受け入れられた答えを持つかなり古い質問ですが、特にこれらの解決策のどれも私のために働かなかったので誰かがこれが役に立つと思うかもしれません。
function redirect_to_backend() {
if( !is_admin() ) {
wp_redirect( site_url('wp-admin') );
exit();
}
}
add_action( 'init', 'redirect_to_backend' );
コード自体はかなり説明的です。
コードを任意のプラグインまたはテーマのfunction.phpに入れるだけで、そのまま使用できます。
編集:
これがうまくいかない場合(このコードでも軽微な問題がありました)、新しいテーマ(または子テーマ)を作成して、その内容だけをheader.php
ファイルに入れることができます。
<?php
header("Location: ".get_admin_url());
exit();
IMO、プラグインはより少ない作業を必要とし、特定のケースにはより適切です.
<?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');
}