As pessoas continuam fazendo essa pergunta, mas as marcam como duplicada. A resposta escolhida para isso, no entanto, realmente não é uma resposta para a pergunta.
Para renomear o administrador do wordpress, você precisa executar duas etapas.
No código a seguir, estou usando o painel como o nome do meu novo wp-admin. Altere o painel no código abaixo para o nome que você deseja nomear como novo administrador.
Primeiro você precisa dizer ao wordpress que deseja alterar o URL do administrador.
Na linha 2558, wp-includes / link-template.php é o código que prejudica o URL do administrador.
Usando o admin_url
filtro, você pode alterar com êxito o URL do administrador com a seguinte função:
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Você pode testar para ver qual é o seu novo URL, fazendo o seguinte:
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' );
No entanto, se você clicar no administrador, nem tudo funciona e alguns dos links podem indicar 404 não encontrado ou algo semelhante.
Segundo, altere o .htaccess no diretório raiz do wordpress e adicione o seguinte no início antes de qualquer outra coisa.
#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
Agora, eu não sou especialista em edição de .htaccess, portanto, isso pode não ser necessário. No entanto, nunca achei que não funcionasse.
Aqui está a coisa toda. Crie um arquivo e solte na pasta plugins ou na pasta mu-plugins. (lembre-se de alterar todas as instâncias do painel para o seu URL de administrador preferido)
<?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');
Problemas?
Eu não tenho nenhum há mais de um ano usando esse método. Você pode notar que o wp-admin ainda funcionará com esse tipo de coisa, mas é mais uma precaução do que qualquer coisa. Eu tinha alguns plugins mal escritos que codificaram o wp-admin em alguns lugares que não carregavam ao tentar bloquear ou redirecionar o wp-admin. Tenho certeza de que existe uma maneira de fazer isso com o htaccess, mas ainda não o descobri. Além disso, isso não foi testado em vários sites ou algo parecido.
Atualização: Abordagem Alternativa
Isso é bem parecido, mas por algum motivo minha resposta acima não funcionou em todos os hosts que tentei.
adicionar à .htaccess
RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Crie um arquivo na pasta mu-plugins chamado new-admin.php
e adicione-o lá:
<?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: Essa abordagem parecia funcionar melhor em alguns hosts, mas ainda havia o problema de não redirecionar os links wp-admin para o novo URL do administrador. Aqui está uma abordagem que tentei abaixo. Embora isso abaixo não funcione , acho que está no caminho certo. Não tenho muita certeza de qual gancho usar. O htaccess pode ser uma alternativa melhor, mas eu continuava recebendo loops de redirecionamento quando tentava dessa maneira.
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
eles têm uma preferência para dizer "não" muito mais frequentemente do que eles dizem "sim", então prevenido :)