2 декабря 2019 в 23:09
на сайт, и вы сможете вступить в группу.
Вы сможете подписаться на выход новых материалов группы.
Вы сможете подписаться на новые комментарии к выбранной записи группы.

Скрываем любой блок для незарегистрированных на примере YouTube блока

Редактор блоков в WordPress 5.0 позволяет нам рассматривать контент не как кашу, а как набор предустановленных блоков. И благодаря этому мы можем защищать любой блок WordPress. Теперь не нужно заморачиваться парсингом всего контента чтобы, например, закрыть все ютуб видео на своём сайте от незалогиненных (не вошедших на сайт) пользователей. Это всё делается несколькими строками кода.

Для того чтобы закрыть видео от незалогиненных не нужно ставить мудрёный плагин. В этом руководстве я вам покажу как закрыть любой блок от гостей.

В записи: "Список названий всех WordPress блоков. Как получить имя блока (Gutenberg)" - я рассказывал как получить список имён блоков (Gutenberg или сторонних плагинов). Оттуда мы возьмём core-embed/youtube и закроем его от незалогиненных, а гостям покажем сообщение, что им необходимо войти на сайт для просмотра видео.


Код:

Небольшой сниппет скрывающий блок ютуб видео:

// разрешим доступ к ютуб видео только залогиненным
add_filter( 'render_block', 'otfm_no_logged_youtube', 10, 2 );
function otfm_no_logged_youtube( $block_content, $block ) {
    if ( "core-embed/youtube" !== $block['blockName'] ) {
        return $block_content;
    }

    if ( ! is_user_logged_in() ) {
        return '<div style="color:#8e2828;background-color:#ffdcdc;border:1px solid #f7d4d4;padding:6px 12px;">'
            . 'Вам нужно залогиниться, чтобы увидеть видео'
            . '</div>';
    } else {
        return $block_content;
    }
}

На 4-й строке мы проверяем - что выводится нужный нам блок.
На 8-й - что сейчас на сайте незалогиненный пользователь - и выводим ему сообщение, а если залогиненный - возвращаем ему содержимое блока.


Результат для гостя:

Гость видит текст-заглушку
Гость видит текст-заглушку

- гость видит нужный вам текст. Он не увидит видео пока не залогинится.

Как видим этот сниппет можно применить для любых блоков, и защищать что-то по нужным вам условиям. Например проверяя что данный пользователь не имеет определенную рефку, что он не состоит в группе (WP-Recall группа) и т.д.

Все изменения делаются "на лету" - и никак не затрагивают хранение блока в базе данных. А убрав этот сниппет вы также легко вернёте доступ всем.

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

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

Оставьте комментарий

Авторизация
*
*
Регистрация
*
*
*
Настоящим подтверждаю, что я ознакомлен и согласен с условиями политики конфиденциальности
Генерация пароля
Закрыть