• Здравствуйте!

    С помощью Contact Form 7 делаю несложную форму из:
    — текстового поля
    — и кнопки «отправить».

    Подскажите, пожалуйста, как реализовать такое, чтобы:

    Если пользователь авторизован — показывалось бы:

    • кнопка «Отправить»

    или

    • «поля Логин, Пароль» (авторизация)
    • и «Отправить»

    А если пользователь НЕавторизованный — показывалась бы:

    • ссылка «Регистрация»

    или

    • «поля Логин, Пароль»,
    • галочка «Регистрация»
    • и «Отправить»
Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Здравствуйте.

    Можете попробовать функцию is_user_logged_in.

    <?php
    if ( is_user_logged_in() ) {
        echo 'Welcome, registered user!';
    } else {
        echo 'Welcome, visitor!';
    }
    ?>

    denisco, спасибо за ответ, да, это решение на логику залогинен/не залогинен.

    Но я не могу пока понять, как сделать так, чтобы эта логика работала в рамках плагина Contact Form 7.

    Потому что если создавать шорт-код типа [member] / [quest] по вашему примеру, шорт-коды не срабатывают на странице создания формы.

    То есть, я думала над тем, как сделать так, чтобы при создании формы можно было сделать как-то так:

    [text text-78 placeholder "Текстовочка"]
    
    [member] <-- если залогинен
       [submit]
    [/member] 
    
    [quest] <-- если НЕзалогинен
        форма авторизации
        [submit]
    [/quest]

    Шорт-код, например, [member], создавала так:

    add_shortcode('member', 'member_check_shortcode');
    function member_check_shortcode( $atts, $content = null ) {
      if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
        return $content;
        return '';
    }

    Шорт-код [guest], соответственно, !is_user_logged_in().

    Проблема: мои шорткоды в рамках создания формы Contact Form 7 — не работают 🙂

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Как вариант, я думаю можно создать две формы для авторизованных и неавторизованных пользователей и показывать их примерно так:

    <?php
    if ( is_user_logged_in() ) {
        echo do_shortcode( '[contact-form-7 id="1234" title="Contact form 1"]' );
    } else {
        echo do_shortcode( '[contact-form-7 id="12345" title="Contact form 2"]' );
    }
    ?>

    Вариант номер 2. Можно попробовать скрывать поля в зависимости от классов элемента <body>:

    body.logged-in input.wpcf7-submit {
        display: none;
    }

    Вариант номер 3. Взять за основу какое-нибудь расширение для Contact Form 7, например, это и сделать свои теги, тогда они будут обрабатываться формой.

    Ну, первым вариантом сейчас так, к сожалению, и сделано, но это «одноразовый» вариант конкретно под данную страницу с формой…

    Второй вариант интересен. Не приходило в голову, но, он привязан к CSS, это не совсем корректно…

    Третий — не совсем поняла как он может быть мне полезен?..
    Он ведь просто добавляет поле, в которое можно как placeholder загнать определенную информацию «страницы»?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Второй вариант интересен. Не приходило в голову, но, он привязан к CSS, это не совсем корректно…

    Класс logged-in является одним из стандартных css-классов WordPress.

    Третий — не совсем поняла как он может быть мне полезен?..
    Он ведь просто добавляет поле, в которое можно как placeholder загнать определенную информацию «страницы»?

    Именно этот да, но Вы можете разработать своё расширение для Contact Form 7, которое добавит нужные теги.

    Класс logged-in является одним из стандартных css-классов WordPress.

    При отключенном в браузере css кнопка будет видна.

    Именно этот да, но Вы можете разработать своё расширение для Contact Form 7, которое добавит нужные теги.

    как раз и хотелось без самодеятельности.
    неужели нет стандартного решения в самом плагине?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    При отключенном в браузере css кнопка будет видна.

    При отключенном css у Вас сайт-то нормально будет виден? 😀 А при отключенном JavaScript нормально будет работать? И самый главный вопрос, что происходит с самим Contact Form 7, если отключить css?

    неужели нет стандартного решения в самом плагине?

    Можете уточнить этот вопрос на форуме поддержки плагина.

    При отключенном css у Вас сайт-то нормально будет виден? 😀 А при отключенном JavaScript нормально будет работать?

    Да, вполне 🙂

    И самый главный вопрос, что происходит с самим Contact Form 7, если отключить css?

    Исчезает оформление. Но не серверная логика. 🙂

    Благодарю за ссылку, я о ней знаю 🙂
    Я надеялась найти русскоязычную помощь здесь, с тегом «contact form 7». Предполагала, что я не первая, кто бы хотел подобное сделать.

    неужели нет стандартного решения в самом плагине?

    Вы не верно пытаетесь решить задачу.
    Зачем Вам форма СФ7, если Вы отправляете человека на регистрацию?
    Правильная логика такая:
    если авторизован (и имеет право) — показываем форму СФ7.
    иначе — отправляем на регистрацию (или сразу выводим форму регистрации)

    И denisco в первом же ответе показал как реализовать этот путь.
    Так же можно решить этот вопрос с пом плагинов, регулирующими что кому показывать.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Тема «Показ кнопки Отправить залогиненным и НЕзалогиненным» закрыта для новых ответов.