У меня есть мой WordPress сайт по адресу xroads.com
Внутри находится папка _warehouse, в которой находится приложение php CRUD.
Можно ли требовать ту же страницу входа, которую я использую для сайта WordPress, для просмотра каталога _warehouse?
Заранее спасибо!
Если у пользователя уже есть аккаунт в WordPress:
Перенаправить пользователя в форму входа. использование wp_login_url
с $redirect
параметр, чтобы установить, куда они идут после входа в систему:
$loginUrl = wp_login_url( home_url('_warehouse') );
https://codex.wordpress.org/Function_Reference/wp_login_url
Затем используйте wp_login
действие для ручной аутентификации пользователя в вашем приложении:
add_action('wp_login', function($username, $user) {
// Log user into external application
}, 10, 2);
https://codex.wordpress.org/Plugin_API/Action_Reference/wp_login
На самом деле установка пользователя как «вошедшего в систему» будет зависеть от того, как настроено ваше внешнее приложение. Это может быть так же просто, как установить переменную сеанса и затем проверить, установлена ли она в вашем приложении хранилища.
Вот одно из возможных решений (используйте на свой страх и риск).
Создать .htaccess
файл в _warehouse
каталог со следующим содержанием:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ wplogin.php [NC,L]
Это перенаправит все запросы на файлы, которые существуют в _warehouse
и любые подкаталоги к _warehouse/wplogin.php
Создайте _warehouse/wplogin.php
со следующим содержанием:
<?php
// Edit this path to include wp-load.php from your WordPress directory
require_once '../wp-load.php';
if (!is_user_logged_in()) {
// if user is not logged in, set redirect URI, show WP login
$_REQUEST['redirect_to'] = $_SERVER['REQUEST_URI'];
require_once '../wordpress/wp-login.php';
exit;
} else {
// user is logged into wordpress - show the requsted file.
require_once $_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
}
Наконец, и это очень важно, добавьте это к wp-config.php
файл:
define('COOKIEPATH', '/');
Это потому, что WordPress будет устанавливать куки с указанным путем. Это предотвратит распознавание файлов cookie для входа в _warehouse
,
И, как я уже сказал, используйте на свой страх и риск. Это не идеально, но, вероятно, это самый быстрый способ достичь того, чего вы хотите, и справится со многими случаями.
Примечание: это не касается каталогов без индекса. Если Apache Options +Indexes
кто-то может видеть списки каталогов в _warehouse
но если они попытаются получить доступ к одному, он покажет страницу входа.