我正在用Bedrock/Timber/ACF在Wordpress上建立一个网站。这个网站在很大程度上受到了限制。
有4-5个页面可供匿名用户使用(主页、联系人、登录和法律/隐私策略页面)。
我目前使用木材路由来管理它,如下所示:
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模板层次结构删除了我所有的路线。但是我仍然有指向登录页面的路由链接,因为我不想要mysite.com/wp/login,而是mysite.com/login。
发布于 2020-06-20 04:08:08
我将使用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);
});https://stackoverflow.com/questions/62042416
复制相似问题