当我开发一个网站并进行一些测试时,我想阻止非管理员(最终是非编辑)访问特定页面,如woocommerce商店和相关页面。
有没有一种不使用插件的方法functions.php
要检查:
$list_of_blocked_pages = [ \'shop\', \'cart\', \'checkout\', \'etc...\' ];
if ( current_page_is_in( $list_of_blocked_pages ) && !admin && !editor ) {
redirect_to_page( $url );
}
最合适的回答,由SO网友:JItendra Rana 整理而成
您可以使用template_redirect 根据您的条款重定向特定用户的操作。在WordPress确定要加载哪个模板页面之前,这个操作挂钩就会执行。如果您需要在完全了解所查询内容的情况下进行重定向,那么这是一个很好的挂钩。
您可以使用is_page 函数用于检查当前页面是否在页面列表中。
add_action( \'template_redirect\', \'redirect_to_specific_page\' );
function redirect_to_specific_page() {
if ( is_page(\'slug\') && ! is_user_logged_in() ) {
wp_redirect( \'http://www.example.dev/your-page/\', 301 );
exit;
}
}