La gente continua a porre questa domanda, ma continua a contrassegnarla come duplicata. La risposta scelta per questo, tuttavia, in realtà non è una risposta alla domanda.
Per rinominare l'amministratore di wordpress è necessario eseguire due passaggi.
Nel seguente codice sto usando dashboard come nome del mio nuovo wp-admin. Cambia dashboard nel codice qui sotto in qualunque cosa tu voglia nominare il tuo nuovo amministratore.
Per prima cosa devi dire a wordpress che vuoi cambiare l'URL di amministrazione.
Sulla riga 2558 wp-Includes / link-template.php è il codice che deride l'URL di amministrazione.
Utilizzando il admin_url
filtro è possibile modificare correttamente l'URL dell'amministratore con la seguente funzione:
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Puoi testare per vedere qual è il tuo nuovo URL facendo questo:
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' );
Tuttavia, se noterai quando fai clic sull'amministratore che non tutto funziona e alcuni dei link potrebbero darti 404 non trovati o qualcosa di simile.
In secondo luogo, modifica .htaccess nella directory principale di wordpress e aggiungi quanto segue all'inizio prima di ogni altra cosa.
#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
Ora, non sono un esperto quando si tratta di modificare .htaccess, quindi alcuni di questi potrebbero non essere necessari. Tuttavia, non ho mai trovato che non funzionasse.
Ecco tutto. Crea un file e rilascialo nella cartella dei plugin o nella cartella mu-plugins. (ricorda di cambiare ogni istanza della dashboard nel tuo URL di amministrazione preferito)
<?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');
Problemi?
Non ne ho avuto da più di un anno usando questo metodo. Potresti notare che wp-admin funzionerà ancora che tipo di schifo, ma è più una precauzione che altro. Avevo alcuni plugin scritti male che codificavano wp-admin in alcuni punti che non si caricavano quando cercavo di bloccare o reindirizzare wp-admin. Sono sicuro che c'è un modo per farlo con htaccess, ma non l'ho capito con successo. Inoltre, questo non è mai stato testato su siti multipli o simili.
Aggiornamento: approccio alternativo
Questo è abbastanza simile, ma per qualche ragione la mia risposta sopra non ha funzionato su tutti gli host che ho provato.
Aggiungere a .htaccess
RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Crea un file nella cartella mu-plugins chiamato new-admin.php
e aggiungilo qui:
<?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);
}
Nota: questo approccio sembra funzionare meglio su alcuni host, ma presenta ancora il problema di non reindirizzare i collegamenti wp-admin al nuovo URL dell'amministratore. Ecco un approccio che ho provato di seguito. Mentre questo sotto non funziona, penso che sia sulla strada giusta. Non sono del tutto sicuro di quale gancio utilizzare. htaccess potrebbe essere un'alternativa migliore ma ho continuato a ricevere loop di reindirizzamento quando ho provato in quel modo.
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
preferiscono dire "no" molto più spesso di quanto dicono "sì", quindi sii avvisato :)