Люди продолжают задавать этот вопрос, но люди продолжают отмечать его как дубликат. Выбранный ответ для этого, однако, на самом деле не является ответом на вопрос.
Чтобы переименовать администратора WordPress, вам нужно сделать два шага.
В следующем коде я использую панель инструментов в качестве имени моего нового wp-admin. Измените панель управления в приведенном ниже коде на имя нового администратора.
Сначала вам нужно сказать WordPress, что вы хотите изменить адрес администратора.
В строке 2558 wp-includes / 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. (не забудьте изменить каждый экземпляр панели мониторинга на предпочитаемый вами адрес администратора)
<?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 на новый адрес администратора. Вот подход, который я попробовал ниже. Хотя это ниже не работает, я думаю, что это на правильном пути. Я не совсем уверен, какой крючок использовать. 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
у них есть предпочтение говорить «нет» гораздо чаще, чем они говорят «да», так что имейте это в виду :)