Die Leute stellen diese Frage immer wieder, aber die Leute markieren sie immer wieder als Duplikat. Die gewählte Antwort darauf ist jedoch keine Antwort auf die Frage.
Um den WordPress-Administrator umzubenennen, müssen Sie zwei Schritte ausführen.
Im folgenden Code verwende ich Dashboard als Namen meines neuen WP-Administrators. Ändern Sie das Dashboard im folgenden Code in einen beliebigen Namen für Ihren neuen Administrator.
Zuerst müssen Sie WordPress mitteilen, dass Sie die Admin-URL ändern möchten.
In Zeile 2558 ist wp-includes / link-template.php der Code, der die Admin-URL bestimmt.
Mit dem admin_url
Filter können Sie die URL des Administrators mit der folgenden Funktion erfolgreich ändern:
function my_custom_admin_url($path) {
return str_replace('wp-admin', 'dashboard', $path);
}
add_filter('admin_url', 'my_custom_admin_url');
Sie können testen, wie Ihre neue URL lautet:
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' );
Wenn Sie jedoch beim Klicken durch den Administrator feststellen, dass nicht alles funktioniert und einige der Links möglicherweise dazu führen, dass Sie 404 nicht gefunden haben oder etwas Ähnliches.
Zweitens ändern Sie die .htaccess-Datei in Ihrem WordPress-Stammverzeichnis und fügen Sie am Anfang vor allem anderen Folgendes hinzu.
#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
Jetzt bin ich kein Experte, wenn es um das Bearbeiten von .htaccess geht, daher ist ein Teil davon möglicherweise nicht erforderlich. Ich habe jedoch nie festgestellt, dass es nicht funktioniert.
Hier ist das Ganze. Erstellen Sie eine Datei und legen Sie sie in Ihrem Plugins-Ordner oder Mu-Plugins-Ordner ab. (Denken Sie daran, jede Instanz des Dashboards in Ihre bevorzugte Administrator-URL zu ändern.)
<?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');
Probleme?
Ich hatte seit über einem Jahr keine mehr mit dieser Methode. Sie werden vielleicht bemerken, dass wp-admin immer noch funktioniert, aber das ist mehr Vorsichtsmaßnahme als alles andere. Ich hatte einige schlecht geschriebene Plugins, die wp-admin an einigen Stellen fest codierten, die beim Versuch, wp-admin zu blockieren oder umzuleiten, nicht geladen wurden. Ich bin sicher, dass es einen Weg gibt, dies mit dem htaccess zu tun, aber ich habe es nicht erfolgreich herausgefunden. Auch dies wurde noch nie auf Multisite-Systemen oder Ähnlichem getestet.
Update: Alternativer Ansatz
Das ist ziemlich ähnlich, aber aus irgendeinem Grund hat meine obige Antwort nicht auf jedem Host funktioniert, den ich ausprobiert habe.
Hinzufügen .htaccess
RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Erstellen Sie eine Datei im Ordner mu-plugins new-admin.php
und fügen Sie diese dort hinzu:
<?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);
}
Hinweis: Dieser Ansatz schien auf einigen Hosts besser zu funktionieren, hatte jedoch immer noch das Problem, dass wp-admin-Links nicht auf die neue Admin-URL umgeleitet wurden. Hier ist ein Ansatz, den ich unten ausprobiert habe. Obwohl dies unten nicht funktioniert, denke ich, dass es auf dem richtigen Weg ist. Ich bin mir nicht ganz sicher, welchen Haken ich verwenden soll. htaccess könnte eine bessere Alternative sein, aber ich bekam immer wieder Umleitungsschleifen, als ich das versuchte.
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
Sie sagen viel häufiger "Nein" als "Ja", seien Sie also gewarnt :)