我的Wordpress网站位于 xroads.com
在里面,有一个名为“_warehouse”的文件夹,其中包含一个php CRUD app
是否可以要求我用于Wordpress网站的同一登录页面查看_warehouse目录?
提前致谢!
答案 0 :(得分:0)
如果用户已在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
实际上将用户设置为“已登录”将取决于外部应用程序的设置方式。它可以像设置会话变量一样简单,然后检查是否在仓库应用程序中设置了它。
答案 1 :(得分:-1)
这是一种可能的解决方案(使用风险自负)。
在.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
中识别登录cookie。
正如我所说,使用风险自负。它并不完美,但可能是达到你想要的最快捷的方式,并且可以处理很多案例。
注意:它不处理没有索引的目录。如果Apache Options +Indexes
处于启用状态,则某人可能会在_warehouse
中看到目录列表,但如果他们尝试访问目录列表,则会显示登录页面。