Orang-orang terus menanyakan pertanyaan ini, tetapi orang-orang terus menandainya sebagai duplikat. Namun jawaban yang dipilih untuk ini, sebenarnya bukan jawaban untuk pertanyaan itu.
Untuk mengganti nama admin wordpress Anda perlu mengambil dua langkah.
Dalam kode berikut saya menggunakan dasbor sebagai nama wp-admin baru saya. Ubah dasbor dalam kode di bawah ini menjadi apa pun yang Anda ingin beri nama admin baru Anda.
Pertama, Anda perlu memberi tahu wordpress bahwa Anda ingin mengubah url admin.
Pada baris 2558 wp-include / link-template.php adalah kode yang membatalkan perintah admin url.
Menggunakan admin_url
filter, Anda berhasil mengubah url admin dengan fungsi berikut:
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Anda dapat menguji untuk melihat apa url baru Anda dengan melakukan ini:
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' );
Namun, jika Anda akan melihat ketika mengklik melalui admin bahwa tidak semuanya berfungsi dan beberapa tautan mungkin memberi Anda 404 tidak ditemukan atau sesuatu yang serupa.
Kedua, ubah .htaccess di direktori root wordpress Anda dan tambahkan berikut ini di awal sebelum yang lainnya.
#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
Sekarang, saya bukan ahli dalam hal mengedit .htaccess sehingga beberapa dari ini mungkin tidak diperlukan. Namun, saya tidak pernah menemukan itu tidak berhasil.
Ini semuanya. Buat file dan letakkan di folder plugins atau folder mu-plugins Anda. (jangan lupa untuk mengubah setiap instance dari dasbor ke url admin pilihan Anda)
<?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');
Masalah?
Saya belum punya lebih dari setahun menggunakan metode ini. Anda mungkin memperhatikan bahwa wp-admin masih akan bekerja dengan jenis yang menyebalkan, tetapi lebih merupakan tindakan pencegahan daripada apa pun. Saya memiliki beberapa plugin yang ditulis dengan buruk yang telah hardcoded wp-admin di beberapa tempat yang tidak mau memuat ketika mencoba untuk memblokir atau mengarahkan ulang wp-admin. Saya yakin ada cara untuk melakukan ini dengan htaccess, tapi saya belum berhasil menemukannya. Juga, ini belum diuji pada multisite atau yang seperti itu sebelumnya.
Pembaruan: Pendekatan Alternatif
Ini sangat mirip, tetapi untuk beberapa alasan jawaban saya di atas tidak bekerja pada setiap host yang saya coba.
Tambahkan .htaccess
RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Buat file dalam folder mu-plugins bernama new-admin.php
dan tambahkan ini di sana:
<?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);
}
Catatan: Pendekatan ini tampaknya berfungsi lebih baik pada beberapa host, tetapi masih memiliki masalah untuk tidak mengalihkan tautan wp-admin ke url admin baru. Inilah pendekatan yang saya coba di bawah ini. Sementara ini di bawah ini tidak berfungsi, saya pikir itu di jalur yang benar. Saya tidak sepenuhnya yakin apa yang digunakan untuk kait. htaccess mungkin menjadi alternatif yang lebih baik, tetapi saya terus mendapatkan pengalihan loop ketika saya mencoba cara itu.
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
mereka memang lebih suka mengatakan "tidak" lebih sering daripada mengatakan "ya" jadi sudah diperingatkan :)