Ограничить доступ к пользователям, вошедшим в систему, шаблон страницы

Вопрос или проблема

Я пытаюсь создать шаблон страницы, который будет ограничивать доступ к контенту только для авторизованных пользователей. Если пользователь не авторизован, то он будет перенаправлен на определенную страницу. Я создал шаблон страницы под названием Restrict Access.

Вот код, который я придумал. Я много раз пытался вставить этот фрагмент в page.php ниже, но он все равно показывает контент. Может кто-нибудь помочь мне и вставить это в нужное место? Также, не могли бы вы просмотреть этот фрагмент и сказать, хорошо ли он составлен?

<?php
// Проверяем, авторизован ли пользователь - если да, показываем контент, если нет - 
//направляем на страницу покупки курса
if (!is_user_logged_in() ){
echo "Доступ ограничен!";
echo '<a href="http://example.com">Перейти на главную страницу</a>';

}else{
// Показываем контент
the_content();
}
?>

Вот мой код page.php

<?php /* Template Name: Restrict Access*/
$options = thrive_get_options_for_post(get_the_ID());

$main_content_class = ($options['sidebar_alignement'] == "right" || 
$options['sidebar_alignement'] == "left") ? $options['sidebar_alignement'] : 
"";

if ($options['sidebar_alignement'] == "right") {
$main_content_class = "left";
} elseif ($options['sidebar_alignement'] == "left") {
$main_content_class = "right";
} else {
$main_content_class = "fullWidth";
}
$sidebar_is_active = _thrive_is_active_sidebar($options);

if (!$sidebar_is_active) {
$main_content_class = "fullWidth";
}

get_header();
?>
<?php if ($options['sidebar_alignement'] == "left" && $sidebar_is_active): ?
>
<?php get_sidebar(); ?>
<?php endif; ?>
<?php if ($sidebar_is_active): ?>
<div class="bSeCont">
<?php endif; ?>
<section class="bSe <?php echo $main_content_class; ?>">

    <?php if (have_posts()): ?>

        <?php while (have_posts()): ?>

            <?php the_post(); ?>

            <?php get_template_part('content', 'single'); ?>

            <?php if (comments_open() && !post_password_required() && $options['comments_on_pages'] != 0) : ?>
                <?php comments_template('', true); ?>
            <?php elseif ((!comments_open() || post_password_required()) && get_comments_number() > 0): ?>
                <?php comments_template('/comments-disabled.php'); ?>
            <?php endif; ?>

        <?php endwhile; ?>

    <?php else: ?>

    <?php endif ?>

</section>

Это можно сделать несколькими способами.
Пожалуйста, обратитесь к кодексу для получения дополнительной информации о иерархии шаблонов, цикле WordPress и функции ‘get_template_part()’. Page.php предназначен для отображения каждой страницы. Вы должны скопировать и переименовать его в page-restricted.php.

Из оригинального page.php удалите эту часть – /* Template Name: Restrict Access*/. Не забудьте включить её в page-restricted.php. Таким образом вы обеспечите, что контент страницы будет отображаться как обычно, он скрывается только при установке шаблона Restrict Access в админке при редактировании страницы. Ваш код должен быть переписан следующим образом:

<?php while (have_posts()): ?>

    <?php the_post(); ?>

    <?php if ( !is_user_logged_in() ) {

        echo "Доступ ограничен!";
        echo '<a href="http://example.com">Перейти на главную страницу</a>';

    } else {

        get_template_part('content', 'single'); ?>

    } ?>

    <?php if (comments_open() && !post_password_required() && $options['comments_on_pages'] != 0) : ?>
        <?php comments_template('', true); ?>
    <?php elseif ((!comments_open() || post_password_required()) && get_comments_number() > 0): ?>
        <?php comments_template('/comments-disabled.php'); ?>
    <?php endif; ?>

<?php endwhile; ?>

Ответ или решение

Чтобы решить задачу по ограничению доступа к содержимому страницы исключительно для авторизованных пользователей, необходимо правильно встроить код проверки авторизации. Несоблюдение или неверная интеграция кода может привести к тому, что содержимое будет отображаться для всех пользователей — авторизованных или нет.

Теория

В представленной задаче требуется реализация условного отображения контента на страницах, в зависимости от статуса пользователя (авторизован или нет). Стандартный способ реализации этого в WordPress – использование функции is_user_logged_in(). Эта функция возвращает true, если пользователь авторизован, и false в противном случае. Основное требование – перенаправить неавторизованных пользователей на специальную страницу, а авторизованным дать доступ к контенту.

Пример

Для повышения понятности задачи следуйте шагам нижеследующего примера:

  1. Создание шаблона: Начните с создания нового файла шаблона страницы, например, page-restricted.php. Вверху файла подключите шаблон:

    <?php
    /* Template Name: Restrict Access */
    ?>
  2. Внедрение логики проверки: Вставьте логику проверки авторизированного пользователя в файл вашего нового шаблона:

    <?php
    if (!is_user_logged_in()) {
       echo "Restricted Content!";
       echo '<a href="http://example.com">Go to Home Page</a>';
       exit(); // Прекращает выполнение кода дальше.
    }
    
    get_header(); // Подключение шапки.
    ?>
    
    <div class="content">
       <?php
       while (have_posts()) : the_post();
           get_template_part('content', 'single');
       endwhile;
       ?>
    </div>
    
    <?php get_footer(); // Подключение подвала. ?>
  3. Удаление шаблона из page.php: Из page.php удалите строчку, объявляющую название шаблона страницы. Это необходимо для корректного применения нового шаблона.

Применение

После создания и настройки шаблона page-restricted.php:

  • Убедитесь, что шаблон доступен в редакторе страниц WordPress. Чтобы ограничить доступ страничного контента, выберите этот шаблон при редактировании нужной страницы в админке.
  • Проверьте работу шаблона, создав тестовую страницу и убедитесь, что она корректно отображает контент только для авторизованных пользователей.
  • Убедитесь, что код перенаправления работает корректно, и неавторизованные пользователи перенаправляются на заранее заданную страницу.

Этот процесс позволяет создать безопасный и функциональный шаблон страницы, предоставляющий доступ к контенту исключительно авторизованным пользователям, тем самым повышая защищенность и контроль над доступом к ресурсу.

Оцените материал
Добавить комментарий

Капча загружается...