Отображение/скрытие элементов в зависимости от авторизации пользователя

27 июл. 2015 г., 11:45:25
Просмотры: 50.2K
Голосов: 0

Я хочу проверять при загрузке страницы, авторизован пользователь или нет, и соответственно скрывать форму входа, которую я запрограммировал. Есть причина, почему я использую эту форму входа вместо перенаправления на стандартную форму WordPress.

Идея была использовать functions.php:

if ( is_user_logged_in() ) {
    echo '<li id="text-2" style="display:none;">';
} else {
    echo '<li id="text-2">'; }

Этот код работает, но страница перестает загружаться после этого. И если я помещаю весь код в функцию, я получаю ошибку - Ошибка парсинга была решена в Ответе01 от Brad Dalton.

Короче говоря: Как показать/скрыть определенные элементы в зависимости от того, авторизован пользователь или нет?

правка01: Вот части кода перед тем, что я опубликовал выше:

<?php

function modify_user_contact_methods($user_contact) {
    // Добавление новых полей
    $user_contact['uidnumber'] = 'UID-Nummer';
    return $user_contact;
}

add_filter('user_contactmethods', 'modify_user_contact_methods');

?>
<?php
if ( is_user_logged_in() ) {
    echo '<li id="text-2" style="display:none;">';
} else {
    echo '<li id="text-2">';
 }
?>

правка02: Я попробовал использовать код, предоставленный ниже с action_hook:

add_action( 'loop_start', 'loginCheck' );
function loginCheck() {
if ( is_user_logged_in() ) {
    echo '<li id="text-2" class="hidden">';
} else {
    echo '<li id="text-2">';
 }
}

Теперь страница выглядит так: - решено в правке03

правка03: Я использовал временное решение, заменив loop_start на loop_end. Однако, как я сказал ранее, раздел, который я хочу скрыть, все еще отображается.

правка04: WP_DEBUG.. посмотрим.. - не найдено ничего существенного, связанного с проблемой

правка05: Итак, вот краткое изложение текущей ситуации:

  • Страница загружается, все элементы отображаются, проверено.
  • jQuery открывает и закрывает окно входа, если пользователь не авторизован, проверено.
  • Содержимое скрыто, когда пользователь авторизован, чтобы избежать путаницы, НЕ РЕШЕНО.

По сути, только функция не делает то, что должна.

Вот ссылка на сайт: easy2work.at

Я хочу скрыть "Firmen-Login | Anmelden" после того, как пользователь авторизуется, и отобразить что-то другое вверху, что уже готово к реализации.

6
Комментарии

Прочитайте сообщение об ошибке синтаксиса - перед вызовом вашей функции не хватает какого-то синтаксического элемента, например запятой, точки с запятой, скобки, точки и т.д.

Pieter Goosen Pieter Goosen
27 июл. 2015 г. 11:50:32

Я уже пробовал использовать add_action('init', loginCheck). Та же ошибка.

theHubi theHubi
27 июл. 2015 г. 12:00:08

Без просмотра кода невозможно точно сказать, что вызывает ошибку. Пожалуйста, разместите затронутый участок кода в [edit]. Не публикуйте код в комментариях - он нечитаем.

Pieter Goosen Pieter Goosen
27 июл. 2015 г. 12:00:31

включите WP_DEBUG в значение true, чтобы увидеть, в чём заключается внутренняя проблема.

Mayeenul Islam Mayeenul Islam
27 июл. 2015 г. 12:31:24

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

Pieter Goosen Pieter Goosen
27 июл. 2015 г. 13:36:14

Я всё ещё задаю тот же вопрос, что и час назад. Просто вокруг него добавилось так много информации, что это стало запутывать даже меня. Поэтому я сократил вопрос, просто убрав нерелевантные или решённые части, указав на решение.

theHubi theHubi
27 июл. 2015 г. 13:41:48
Показать остальные 1 комментариев
Все ответы на вопрос 1
2

Ваш код не будет работать в файле функций темы, если он не содержит хука.

Попробуйте что-то вроде:

add_action( 'loop_start', 'your_function' );
function your_function() {

if ( is_user_logged_in() ) {
    echo '<li id="text-2" class="hide">';
} else {
    echo '<li id="text-2">'; 
}}
27 июл. 2015 г. 12:01:35
Комментарии

Итак, сайт снова загружается, но ничего не изменилось в отношении упомянутой мной проблемы. Кроме того, загрузка сайта останавливается после заголовка (см. выше)

theHubi theHubi
27 июл. 2015 г. 12:12:59

Текущая ситуация такова: сайт загружается, jQuery выполняет то, что должен. Только эта функция не хочет работать. Я добавлю edit05 и постараюсь быть максимально точным.

theHubi theHubi
27 июл. 2015 г. 13:05:20