Я немного изменил структуру своего WordPress. Вот что я имею:
define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/wordpress'); define('WP_HOME', 'http://' . $_SERVER['SERVER_NAME']); define('WP_CONTENT_DIR', dirname(__FILE__) . '/content'); define('WP_CONTENT_URL', 'http://' . $_SERVER['SERVER_NAME'] . '/content');
Поэтому у меня есть каталог содержимого, содержащий мои плагины и темы. И тогда у меня есть каталог wordpress, который содержит основные файлы WP, минус папку wp-content.
С помощью этой новой структуры я должен получить доступ к серверу WP с помощью этого URL-адреса: http://site.dev/wordpress/wp-admin
Есть ли способ изменить его, чтобы я мог просто получить к нему доступ так: http://site.dev/wp-admin
Я не хочу, чтобы WordPress находился в URL-адресе. Будет ли это обновление htaccess, которое мне нужно сделать, или есть параметр, который я могу использовать в моем файле wp-config.php?
Вот статья с сайта wordpress.
http://wordpress.org/support/topic/how-to-change-the-admin-url-or-wp-admin-to-secure-login
Добавить константу в wp-config.php
define('WP_ADMIN_DIR', 'secret-folder'); define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);
Добавьте фильтр ниже в функции functions.php
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); }
Добавьте строку ниже в файл .htaccess
RewriteRule ^secret-folder/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Я общался с этим, и есть намного более простой способ сделать это в этой простой простой функции ниже, без необходимости гасить что-нибудь еще (создавать ненужные папки, переадресации, страницы и т. Д.).
// Simple Query String Login page protection function example_simple_query_string_protection_for_login_page() { $QS = '?mySecretString=foobar'; $theRequest = 'http://' . $_SERVER['SERVER_NAME'] . '/' . 'wp-login.php' . '?'. $_SERVER['QUERY_STRING']; // these are for testing // echo $theRequest . '<br>'; // echo site_url('/wp-login.php').$QS.'<br>'; if ( site_url('/wp-login.php').$QS == $theRequest ) { echo 'Query string matches'; } else { header( 'Location: http://' . $_SERVER['SERVER_NAME'] . '/' ); } } add_action('login_head', 'example_simple_query_string_protection_for_login_page');
Все, что я сделал, было перемещено папкой WP-Admin (внутри public_html / wordpress) только в public_html, и я удвоил флажок, чтобы убедиться, что он будет работать, переименовав мою папку WordPress (я использовал wordpress_test, вы можете использовать что угодно) и отправился на мой site example.com/wp-admin, и он работал точно так же, если я пошел в example.com/wordpress/wp-admin.
Единственное, что довольно сложно, это изменить wp-admin на что-то еще, из-за того, что WP закодировал WP-admin во многих файлах. Простое изменение имени вызывает ошибки php и другие ошибки и т. Д. Простой плагин, который я вижу, будет легко исправлять.
Надеюсь, эта информация полезна 🙂
* Мне не нужно было делать какие-либо кодировки для этого, мне пришлось изменить код для Wp-admin, хотя, поскольку плагин не делал то, что я хотел
Это очень полезная тема. Она дала мне тему для размышлений. Но я сделал небольшую коррекцию в функции, и это моя версия 🙂
add_filter('site_url', 'wpadmin_filter', 10, 3); function wpadmin_filter( $url, $path, $orig_scheme ) { $request_url = $_SERVER['REQUEST_URI']; $check_wp_admin = stristr($request_url, 'wp-admin'); if($check_wp_admin){ wp_redirect( home_url( '404' ), 302 ); exit(); } $old = array( "/(wp-admin)/"); $admin_dir = WP_ADMIN_DIR; $new = array($admin_dir); return preg_replace( $old, $new, $url, 1); }
В основном для перенаправления wp-admin.
И самая важная часть.
add_rewrite_rule( '^' . 'backend/(.*)','wp-admin/$1?%{QUERY_STRING}' );
Чтобы обновить правило htaccess.