Ludzie wciąż zadają to pytanie, ale wciąż zaznaczają je jako duplikaty. Wybrana odpowiedź na to pytanie nie jest jednak odpowiedzią na pytanie.
Aby zmienić nazwę administratora wordpress, musisz wykonać dwa kroki.
W poniższym kodzie używam pulpitu nawigacyjnego jako nazwy mojego nowego administratora wp-admin. Zmień pulpit nawigacyjny w poniższym kodzie na dowolną nazwę nowego administratora.
Najpierw musisz powiedzieć wordpressowi, że chcesz zmienić adres administratora.
W linii 2558 wp-zawiera / link-template.php to kod, który wykreśla adres URL administratora.
Za pomocą admin_url
filtra możesz z powodzeniem zmienić adres URL administratora za pomocą następującej funkcji:
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Możesz przetestować, aby zobaczyć, jaki jest Twój nowy adres URL, wykonując następujące czynności:
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' );
Jeśli jednak zauważysz po kliknięciu przez administratora, że nie wszystko działa, a niektóre linki mogą spowodować 404 nie znaleziono lub coś podobnego.
Po drugie, zmień .htaccess w katalogu głównym Wordpress i dodaj następujące na początku, zanim cokolwiek innego.
#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
Teraz nie jestem ekspertem w dziedzinie edycji .htaccess, więc niektóre z nich mogą nie być konieczne. Jednak nigdy nie znalazłem, żeby to nie działało.
Oto cała sprawa. Utwórz plik i upuść w folderze wtyczek lub folderze mu-plugins. (pamiętaj, aby zmienić każde wystąpienie pulpitu nawigacyjnego na preferowany adres administratora)
<?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');
Zagadnienia?
Od ponad roku nie stosuję tej metody. Możesz zauważyć, że wp-admin nadal będzie działał, co jest do bani, ale jest to raczej środek ostrożności niż cokolwiek innego. Miałem kilka źle napisanych wtyczek, które zakodowały wp-admin w niektórych miejscach, które nie ładowałyby się podczas próby zablokowania lub przekierowania wp-admin. Jestem pewien, że można to zrobić za pomocą htaccess, ale nie udało mi się tego rozgryźć. Ponadto nie było to nigdy testowane na wielu witrynach ani w żadnym innym tego rodzaju.
Aktualizacja: podejście alternatywne
Jest to dość podobne, ale z jakiegoś powodu moja powyższa odpowiedź nie działała na każdym hostie, którego próbowałem.
Dodać do .htaccess
RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Utwórz plik w folderze mu-plugins o nazwie new-admin.php
i dodaj go tam:
<?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);
}
Uwaga: to podejście wydawało się działać lepiej na niektórych hostach, ale nadal występował problem polegający na tym, że nie przekierowywał łączy wp-admin do nowego adresu URL administratora. Oto podejście, które wypróbowałem poniżej. Chociaż to poniżej nie działa , myślę, że jest na dobrej drodze. Nie jestem do końca pewien, jakiego haka użyć. htaccess może być lepszą alternatywą, ale próbowałem w ten sposób otrzymywać pętle przekierowań.
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
wolą częściej mówić „nie” niż „tak”, więc bądźcie ostrzeżeni :)