Mọi người cứ hỏi câu hỏi này, nhưng mọi người cứ đánh dấu nó là một bản sao. Câu trả lời được chọn cho điều này, tuy nhiên, thực sự không phải là một câu trả lời cho câu hỏi.
Để đổi tên quản trị wordpress, bạn cần thực hiện hai bước.
Trong đoạn mã sau tôi đang sử dụng bảng điều khiển làm tên của quản trị viên wp mới của tôi. Thay đổi bảng điều khiển trong mã dưới đây thành bất cứ điều gì bạn muốn đặt tên quản trị viên mới của bạn.
Trước tiên, bạn cần nói với wordpress bạn muốn thay đổi url quản trị viên.
Trên dòng 2558 wp-gộp / link-template.php là mã làm mất hiệu lực url quản trị viên.
Sử dụng admin_url
bộ lọc, bạn có thể thay đổi thành công url của quản trị viên với chức năng sau:
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Bạn có thể kiểm tra để xem url mới của bạn là gì bằng cách thực hiện điều này:
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' );
Tuy nhiên, nếu bạn sẽ nhận thấy khi nhấp qua quản trị viên rằng không phải mọi thứ đều hoạt động và một số liên kết có thể cung cấp cho bạn 404 không tìm thấy hoặc một cái gì đó tương tự.
Thứ hai, thay đổi .htaccess trong thư mục gốc wordpress của bạn và thêm phần sau vào đầu trước bất cứ điều gì khác.
#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
Bây giờ, tôi không phải là chuyên gia khi chỉnh sửa .htaccess nên một số điều này có thể không cần thiết. Tuy nhiên, tôi chưa bao giờ thấy nó không hoạt động.
Đây là toàn bộ. Tạo một tệp và thả vào thư mục plugin hoặc thư mục mu-plugins của bạn. (hãy nhớ thay đổi mọi phiên bản của bảng điều khiển thành url quản trị viên ưa thích của bạn)
<?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');
Vấn đề?
Tôi đã không có bất kỳ trong hơn một năm sử dụng phương pháp này. Bạn có thể nhận thấy rằng wp-admin vẫn sẽ hoạt động tốt, nhưng đó là một biện pháp phòng ngừa hơn bất cứ điều gì. Tôi đã có một số plugin được viết kém mà mã hóa wp-admin ở một số nơi sẽ không tải khi cố gắng chặn hoặc chuyển hướng wp-admin. Tôi chắc chắn có một cách để làm điều này với htaccess, nhưng tôi đã không tìm ra thành công. Ngoài ra, điều này chưa được thử nghiệm trên multisite hoặc bất cứ điều gì tương tự.
Cập nhật: Phương pháp thay thế
Điều này khá giống nhau, nhưng vì một số lý do, câu trả lời trên của tôi không hoạt động trên mọi máy chủ tôi đã thử.
Thêm vào .htaccess
RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Tạo một tệp trong thư mục mu-plugins được gọi new-admin.php
và thêm tệp này vào đó:
<?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);
}
Lưu ý: Cách tiếp cận này có vẻ hoạt động tốt hơn trên một số máy chủ, nhưng vẫn có vấn đề không chuyển hướng liên kết wp-admin sang url quản trị mới. Đây là một cách tiếp cận tôi đã thử dưới đây. Mặc dù điều này dưới đây không hoạt động, tôi nghĩ rằng nó đang đi đúng hướng. Tôi không hoàn toàn chắc chắn nên sử dụng hook nào. htaccess có thể là một sự thay thế tốt hơn nhưng tôi vẫn nhận được các vòng chuyển hướng khi tôi thử theo cách đó.
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
họ có sở thích nói "không" thường xuyên hơn nhiều so với họ nói "có" nên được cảnh báo trước :)