Каковы наилучшие методы ограничения доступа к моему веб-сайту, кроме двух страниц? - PullRequest
0 голосов
/ 27 мая 2020

Я создаю сайт на Wordpress с помощью Bedrock / Timber / ACF. Этот сайт закрыт на большую часть его.

Для анонимных пользователей доступно 4-5 страниц (домашняя страница, контакты, страница входа и юридическая страница / политика конфиденциальности).

В настоящее время я управляю этим с помощью Timber routing, например:

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.

1 Ответ

0 голосов
/ 19 июня 2020

Я бы использовал 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);
});
...