我在这里读了几篇以前的帖子,但没有一个在我的情况下工作..基本上,我的博客网站安装在主网站的子目录..普通的php和子目录的主要网站是wordpress ..我允许用户在登录后才能阅读我的博客 . 所以,我经常在Facebook上分享博客链接,其中有很多新用户从链接进来 .
主网站安装在=> example.com wordpress子目录=> example.com/blog中
由于我正在使用自定义模板登录页面(login.php),因此每当未登录的用户出现时,他们都会被重定向到example.com/blog/login . 我正在使用此功能重定向到登录页面:
function redirect_user(){
if(!is_user_logged_in()&&!is_page('login')){
$return_url = esc_url('http://www.example.com/blog/login');
wp_redirect( $return_url );
exit;
}
}
add_action('template_redirect','redirect_user');
它重定向很好,没有问题..然后重定向到引用网址的主要任务,我使用上面的类似代码,直接指向每个登录用户的引用网址,无论是帖子还是帖子或页面 . 再次在函数中 . PHP
如果(is_user_logged_in())
wp_redirect('' . $_SERVER["REQUEST_URI"]);
我认为他们会工作但似乎无法理解引用url是附加子目录名称...例如;上面的代码显示结果如下:
example.com/blog/blog/blabla-blahblah ..您看到目录名称正在加倍..
任何人的建议将受到高度赞赏..
1 回答
将WordPress网站放在子目录中对您要执行的操作没有任何影响 . 为什么?因为WordPress知道它位于何处,因此您在
wp-config.php
文件中设置了主页和站点URL,如下所示:或者在设置>常规管理页面中同时设置:
因此,所有重写和URL都将与这些URL相关 .
处理Referer Capture
当有人访问您网站上的某个页面时,您希望捕获该原始请求并将其添加为
redirect_to=
查询arg . 然后您可以将它们发送到登录页面 .工作原理
事件
wp
在wp-includes/class-wp.php
中触发 . 它传递WordPress环境设置的对象实例 . 以下是WordPress Core的代码:此环境对象具有我们想要的属性
request
. 该属性具有URL请求(减去博客的主页URL) .如果
$wp_environment->request
有值,我们会将其作为查询arg添加到主URL;否则,我们只想要家庭网址 . 现在我们有了引用者 .接下来,创建重定向URL,其中包含登录页面和
redirect_to
查询arg的路径 .一个例子
假设您有一个名为
Why I Love WordPress
的帖子,该帖子的路径为http://example.com/blog/why-i-love-wordpress
.$request
中的值为:http://example.com/blog/why-i-love-wordpress
并且重定向URL将是:
http://example.com/blog/wp-login.php?redirect_to=http://example.com/why-i-love-wordpress
登录后,用户将被重定向到原始页面请求 .
提示 - 处理退出
您需要在用户注销后考虑路径,然后再为其构建正确的请求 .