除了两个页面之外,限制访问我的网站的最佳做法是什么
What are the best practices to restrict access to my website except for two pages
我正在使用 Bedrock/Timber/ACF 在 Wordpress 上构建网站。
该网站的大部分内容都受到限制。
有 4-5 个页面可供匿名用户使用(主页、联系人、登录和 legal/privacy 政策页面)。
我目前使用 Timber 路由管理它,例如:
Routes::map('/blog/page/:num/', function ($params) {
if (!is_user_logged_in()) {
wp_redirect(home_url().'/login');
exit();
}
$user = wp_get_current_user();
if ($user->roles[0]=="subscriber") {
$post_type="publish";
} else {
$post_type="any";
}
$query = 'order=ASC&orderby=title&paged='.$params['num'].'&post_status='.$post_type;
Routes::load('list-blog.php', $params, $query, 200);
});
但是我不知道这是否是个好方法,因为我不能使用 wordpress 模板层次结构,在管理员方面,每次我想创建一个新页面时,我都必须创建路径...
所以我的解决方案不灵活且难以维护...
你有什么建议吗?
编辑:
我几乎通过使用 wordpress 模板层次结构删除了所有路由。但我仍然有路由 link 到登录页面,因为我不想拥有 mysite.com/wp/login 但 mysite.com/login.
我会使用 array_key_exists 而不是检查第一个变量,因为在某些情况下订阅者角色是第二个。
如果您使用的是 ACF,您可以尝试向您的页面添加一个复选框字段并查询该字段的变量。
https://www.advancedcustomfields.com/resources/query-posts-custom-fields/
Routes::map('/blog/page/:num/', function ($params) {
if (!is_user_logged_in()) {
wp_redirect(home_url().'/login');
exit();
}
$user = wp_get_current_user();
$post_type = array_key_exists("subscriber", $user->roles) ? "publish" : "any";
$query = 'order=ASC&orderby=title&paged='.$params['num'].'&post_status='.$post_type;
Routes::load('list-blog.php', $params, $query, 200);
});
我正在使用 Bedrock/Timber/ACF 在 Wordpress 上构建网站。 该网站的大部分内容都受到限制。
有 4-5 个页面可供匿名用户使用(主页、联系人、登录和 legal/privacy 政策页面)。
我目前使用 Timber 路由管理它,例如:
Routes::map('/blog/page/:num/', function ($params) {
if (!is_user_logged_in()) {
wp_redirect(home_url().'/login');
exit();
}
$user = wp_get_current_user();
if ($user->roles[0]=="subscriber") {
$post_type="publish";
} else {
$post_type="any";
}
$query = 'order=ASC&orderby=title&paged='.$params['num'].'&post_status='.$post_type;
Routes::load('list-blog.php', $params, $query, 200);
});
但是我不知道这是否是个好方法,因为我不能使用 wordpress 模板层次结构,在管理员方面,每次我想创建一个新页面时,我都必须创建路径...
所以我的解决方案不灵活且难以维护...
你有什么建议吗?
编辑: 我几乎通过使用 wordpress 模板层次结构删除了所有路由。但我仍然有路由 link 到登录页面,因为我不想拥有 mysite.com/wp/login 但 mysite.com/login.
我会使用 array_key_exists 而不是检查第一个变量,因为在某些情况下订阅者角色是第二个。
如果您使用的是 ACF,您可以尝试向您的页面添加一个复选框字段并查询该字段的变量。
https://www.advancedcustomfields.com/resources/query-posts-custom-fields/
Routes::map('/blog/page/:num/', function ($params) {
if (!is_user_logged_in()) {
wp_redirect(home_url().'/login');
exit();
}
$user = wp_get_current_user();
$post_type = array_key_exists("subscriber", $user->roles) ? "publish" : "any";
$query = 'order=ASC&orderby=title&paged='.$params['num'].'&post_status='.$post_type;
Routes::load('list-blog.php', $params, $query, 200);
});