Как скрыть сртаницу(single) записи от не зарегистрированных?
Во хочу сделать как в примере
хочу сделать каталог через записи,рубрики
т.е в списках продукции будут отображаться карточки, закрыты от незарегистрированных, по клику ведет на страницу входа
С помощью чего это можно сделать?
Дополнительно:
alexiusgrey @alexiusgrey что-то типа
<?php if ( !is_user_logged_in() : ?> /*ссылка на страницу регистрации*/ <a href="<?php echo get_permalink( wc_get_page_id( 'myaccount' ) ); ?>"> <?php else : ?> /*ссылка на сингл*/ <a href="the_permalink">Link</a> <?php endif; ?> |
<?php if ( !is_user_logged_in() : ?> /*ссылка на страницу регистрации*/ <a href="<?php echo get_permalink( wc_get_page_id( 'myaccount' ) ); ?>"> <?php else : ?> /*ссылка на сингл*/ <a href="the_permalink">Link</a> <?php endif; ?>
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для каталога, где карточки видны всем, но single-страницы закрыты для гостей, лучше закрывать доступ на уровне шаблона/редиректа, а ссылки в списке формировать с учётом авторизации. Тогда пользователь не попадёт на закрытый URL напрямую, даже если скопирует ссылку.
Редирект гостей с одиночных записей можно добавить в
functions.phpдочерней темы или в небольшой плагин:add_action('template_redirect', function () { if (is_singular('post') && ! is_user_logged_in()) { wp_safe_redirect(wp_login_url(get_permalink())); exit; } });
Если каталог сделан не обычными записями, а произвольным типом, замените условие:
if (is_singular('product_item') && ! is_user_logged_in()) { wp_safe_redirect(wp_login_url(get_permalink())); exit; }
В карточке архива ссылку можно менять так:
$url = is_user_logged_in() ? get_permalink() : wp_login_url(get_permalink()); echo '<a href="' . esc_url($url) . '">' . esc_html(get_the_title()) . '</a>';
В вашем примере есть синтаксическая ошибка: у
ifне хватает закрывающей скобки, аthe_permalinkнельзя писать как строку внутриhref. Если используется WooCommerce-аккаунт, вместоwp_login_url()можно вести на страницуmy-account, но после входа удобнее возвращать пользователя на исходную карточку.