Люди продовжують задавати це питання, але люди продовжують позначати його як дублікат. Однак обрана відповідь на це насправді не є відповіддю на питання.
Щоб перейменувати адміністратора wordpress, потрібно зробити два кроки.
У наступному коді я використовую інформаційну панель як ім'я мого нового wp-адміністру. Змініть інформаційну панель у наведеному нижче коді на те, що ви хочете назвати своїм новим адміністратором.
Спочатку потрібно сказати wordpress, що ви хочете змінити URL-адресу адміністратора.
У рядку 2558 wp-include / link-template.php - код, який визначає URL-адресу адміністратора.
За допомогою admin_url
фільтра можна успішно змінити URL-адресу адміністратора за допомогою наступної функції:
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Ви можете перевірити, чи є ваша нова URL-адреса:
function whats_my_admin_url() {
$url = admin_url();
echo '<pre><code>'; print_r( $url ); echo '</code></pre>';
}
add_action( 'admin_notices', 'whats_my_admin_url' );
Однак якщо ви помітите, натискаючи адміністратора, що не все працює, і деякі з посилань можуть дати вам 404 не знайдені чи щось подібне.
По-друге, змініть .htaccess у кореневому каталозі wordpress і додайте наступне на початку перед усім.
#CUSTOM ADMIN URL REWRITE
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE
Тепер я не фахівець, коли справа стосується редагування .htaccess, тому щось із цього може не бути необхідним. Однак я ніколи не виявив, що це працює.
Ось вся справа. Створіть файл і перепустіть у свою папку плагінів або папку mu-plugins. (не забудьте змінити кожен екземпляр інформаційної панелі на бажану URL-адресу адміністратора)
<?php
/**
* Plugin Name: Change My Admin URL
* Plugin URI: http://wordpress.stackexchange.com/questions/106/can-i-rename-the-wp-admin-folder
* Description: Changes the admin url where wp-admin becomes dashboard (or whatever you change it to)
* Version: 1.0
* Author: Bryan Willis
* Author URI: http://profiles.wordpress.org/codecandid
* License: GPL2
*/
/*
#CUSTOM ADMIN URL REWRITE FOR HTACCESS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE
*/
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Випуски?
У мене більше року не було таких методів. Ви можете помітити, що wp-admin все одно буде працювати, який смокче, але це скоріше запобіжний засіб, ніж усе. У мене були погано написані плагіни, які жорстко кодували wp-admin у деяких місцях, які не завантажуються при спробі блокувати або перенаправляти wp-admin. Я впевнений, що є спосіб зробити це за допомогою htaccess, але я не вдало це зрозумів. Крім того, це не тестувалося на багатосайтових або подібних досі.
Оновлення: Альтернативний підхід
Це досить схоже, але чомусь моя вище відповідь не працювала на кожному хості, який я спробував.
Додати до .htaccess
RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Створіть файл у папці mu-plugins під назвою new-admin.php
та додайте його туди:
<?php
define('WP_ADMIN_DIR', 'admin');
defined('SITECOOKIEPATH') || define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);
add_filter('site_url', 'wpadmin_filter', 10, 3);
function wpadmin_filter( $url, $path, $orig_scheme ) {
$old = array( "/(wp-admin)/");
$admin_dir = WP_ADMIN_DIR;
$new = array($admin_dir);
return preg_replace( $old, $new, $url, 1);
}
Примітка. Цей підхід, здається, працює краще на деяких хостах, але все-таки виникає проблема не перенаправляти посилання wp-admin до нової URL-адреси адміністратора. Ось підхід, який я спробував нижче. Хоча це нижче не працює, я думаю, що це на правильному шляху. Я не зовсім впевнений, який гачок використовувати. htaccess може бути кращою альтернативою, але я намагався отримувати петлі переспрямування, коли намагався.
add_action('init', 'redirect_wp_admin_url_to_404');
function redirect_wp_admin_url_to_404(){
$redirect_to = $_SERVER['REQUEST_URI'];
if(count($_REQUEST)> 0 && array_key_exists('redirect_to', $_REQUEST)){
$redirect_to = $_REQUEST['redirect_to'];
$check_wp_admin = stristr($redirect_to, 'wp-admin');
if($check_wp_admin){
wp_safe_redirect( '404.php' );
}
}
}
+1
вони мають перевагу говорити "ні" набагато частіше, ніж кажуть "так", тому будьте попереджені :)