问题: 我试图让我的网站上的页面只有登录的人可以访问,我已经成功实现了登录显示这个其他显示woocommerce登录/注册部分。我在第二个代码框中添加了我在下面使用的代码。
我的问题是他们登录后将它们发送回页面并且仅在此实例中。例如,页面被称为免费的东西,通常,登录后,woocommerce客户被发送到我的帐户,而在这个单一的实例中,当从这个页面登录时,我希望它们通过将它们重定向到同一页面而保留在页面上,我猜这几乎是一次刷新,但这次状态是登录的,所以他们会看到内容,而不是登录表单。
我做了什么: 我已经手动测试了登录状态而没有重定向,就内容锁定方面而言,它都可以正常工作。
我读了另一篇关于functions.php过早运行的帖子,知道它是什么页面,但我不确定这对我的情况有什么意义,以及如何实现这一目标。
有一些涂鸦我设法导致所有登录重定向到此页面,但这不是预期的。
我发现在使用下面的代码时它似乎不起作用,在if is_page('free-stuff')检查期间,它似乎没有传递重定向。所有这些都是我正在使用的代码:
function wc_freestuff_user_redirect( $redirect, $user ) {
if(is_page( 'free-stuff' )){
$redirect = 'http://www.example.com/free-stuff/';
}
return $redirect;
}
add_filter( 'woocommerce_login_redirect',
'wc_freestuff_user_redirect',10,2);
任何人都可以帮我理清我可能做错了什么或如何解决这个问题?代码位于子主题functions.php文件中。
我认为展示我如何实施表单可能会有所帮助。同样在相关页面上我添加了protected字段并将其设置为yes以触发以下功能
function restrict_page_content($content) {
if( get_post_meta( get_the_ID(), 'protected', true ) == 'yes' && !is_user_logged_in() ) {
//consider moving this below into a page template and calling the page template instead
return 'YOU MUST BE LOGGED IN TO VIEW THIS CONTENT <br/ > [woocommerce_my_account]';
}
else {
return $content;
}
}
add_filter( 'the_content', 'restrict_page_content' );
只是为了澄清这也是在儿童主题
的functions.php中