哈克雷。。。。很好的回答。。。现在,wordpress的最新版本有了一个单独的网络管理员,我使用了您的解决方案,并在部分中添加了以相同方式正确重写“网络管理员”链接的内容。。。
/**
* Change Admin URL
*
* Copyright (C) 2010 hakre <http://hakre.wordpress.com/>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* USAGE:
*
* Copy the file into wp-content/mu-plugins directory and add the
* following RewriteRule to your apache configuration or .htaccess:
*
* RewriteRule ^admin/(.*)$ wp-admin/$1 [QSA,L]
*
* It will rewrite the wordpress admin-URL
*
* from: http://example.com/wp-admin/ ...
* to : http://example.com/admin/ ...
*
* @author hakre <http://hakre.wordpress.com>
* @see http://wordpress.stackexchange.com/questions/4037/how-to-redirect-rewrite-all-wp-login-requests/4063
* @todo mod_rewrite_rules - filter to insert into .htacces on plugin activation
*
*/
/** Updated version my Mark Figueredo, <http://gruvii.com/> **/
return ChangeAdminUrlPlugin::bootstrap();
class ChangeAdminUrlPlugin {
private $renameFrom = \'wp-admin\';
private $renameTo = \'admin\';
static $instance;
static public function bootstrap() {
null === self::$instance
&& self::$instance = new self()
;
return self::$instance;
}
private function setCookiePath() {
defined(\'SITECOOKIEPATH\') || define(\'SITECOOKIEPATH\', preg_replace(\'|https?://[^/]+|i\', \'\', get_option(\'siteurl\') . \'/\' ) );
defined(\'ADMIN_COOKIE_PATH\') || define(\'ADMIN_COOKIE_PATH\', SITECOOKIEPATH . $this->renameTo);
}
public function __construct() {
$this->setCookiePath();
add_action(\'init\', array($this, \'init\')) ;
}
public function init() {
add_filter(\'admin_url\', array($this, \'admin_url\'), 10, 3);
add_filter(\'network_admin_url\', array($this, \'network_admin_url\'), 10, 3);//Added by Mark Figueredo, <http://gruvii.com/>
}
public function admin_url($url, $path, $blog_id) {
$renameFrom = $this->renameFrom;
$renameTo = $this->renameTo;
$scheme = \'admin\';
$find = get_site_url($blog_id, $renameFrom.\'/\', $scheme);
$replace = get_site_url($blog_id, $renameTo.\'/\', $scheme);
(0 === strpos($url, $find))
&& $url = $replace.substr($url, strlen($find))
;
return $url;
}
// Added by Mark Figueredo, <http://gruvii.com/>
public function network_admin_url($url, $path) {
$renameFrom = $this->renameFrom;
$renameTo = $this->renameTo;
$scheme = \'admin\';
$find = network_site_url($renameFrom.\'/\', $scheme);
$replace = network_site_url($renameTo.\'/\', $scheme);
(0 === strpos($url, $find))
&& $url = $replace.substr($url, strlen($find))
;
return $url;
}
}