WordPress: управление видимостью контента

Содержание

  • 1 Контент виден только для зарегистрированных пользователей
  • 2 Видимость контента в зависимости от роли пользователя на сайте
  • 3 Видимость контента в диапазоне дат каждого месяца
  • 4 Видимость контента в определенное число месяца
  • 5 Видимость контента в определенный день недели
  • 6 Видимость контента только в определенный месяц в году
  • 7 Видимость контента в диапазоне месяцев
  • 8 Видимость контента после наступления даты
  • 9 Если не работают шорткоды в шорткоде

Иногда бывает полезным скрыть и/или показать часть контента в записях/страницах WordPress в зависимости от тех или иных условий. Условия и ситуации бывают разными. Допустим, вы проводите конкурс на своем сайте и условия конкурса или его результаты должны автоматически появится на сайте 17 числа текущего месяца. Или вы распространяете ссылки на своем сайте, но не хотите, чтобы их видели все, а только зарегистрированные пользователи сайта. Или вы принимаете анкеты на сайте от аудитории, но хотите показывать анкету на сайте только с 1 по 10 число каждого месяца... И т.д.

Плагинов, управляющих контентом WordPress, разумеется, есть великое множество. Удовлетворяют ли они все востребованные ситуации - не ясно. Но и сделать такое самому (без использования плагинов) не так и сложно. Мы будем использовать шорткоды - это простой набор функций для создания и использования макро-кодов в содержимом записей/страниц. Мы накодируем некоторые типичные ситуации, отталкиваясь от них, вы сможете создать и свою особенную функцию.

Для каждой ситуации нам потребуется функция шорткода, она обычно вставляется в файл functions.php текущей темы и пример непосредственного использования в теле записи/страницы.

Контент виден только для зарегистрированных пользователей

Часть контента на странице можно скрыть от не зарегистрированных пользователей (естественно, его не увидят и роботы поисковых систем). Обычно скрывают: ссылки для скачивания файла, ответ на какой-то вопрос, оставшуюся часть контента (с целью мотивации пользователей регистрироваться и т.д.).

function logged_in_user_content($atts, $content = null) { if (is_user_logged_in() && !is_null($content) && !is_feed()) { return $content; } return 'Доступно только для зарегистрированных пользователей'; } add_shortcode( 'vizible', 'logged_in_user_content');

Использование в теле записи/страницы:

[vizible] Этот текст увидят только зарегистрированные пользователи. Он также будет исключен из поиска. [/vizible]

Видимость контента в зависимости от роли пользователя на сайте

У зарегистрированных пользователей бывают и различные роли (можно здесь почитать). Вы можете оперировать контентом на своем сайте, если используете градации доступа юзеров на своем сайте:

function content_by_user($attr, $content = null) { $defaults = array( 'capability' => '' ); extract(shortcode_atts($defaults, $attr)); if (current_user_can($capability) && !is_null($content) && !is_feed() ) { return $content; } return 'У Вас не хватает прав'; } add_shortcode('rolecontent', content_by_user');

Использование в теле записи/страницы:

[rolecontent capability="edit_posts"] Эта часть контента видна пользователям, c соответствующими правами на сайте. [/rolecontent]

Можно использовать следующие параметры:

  • read - контент будет виден всем
  • edit_posts - виден редакторам
  • manage_options - только администраторам

Видимость контента в диапазоне дат каждого месяца

Если вы хотите сделать видимым часть контента в определенном диапазоне дат каждого месяца (скажем, с 1 по 10 число), можно использовать такой шорткод:

function content_countdown($atts, $content = null){ extract(shortcode_atts(array( 'ot' => '', 'do' => '' ), $atts)); $dt=date("j"); if ($dt>=$ot && $dt<=$do) { return $content; } } add_shortcode('data', 'content_countdown');

Использование в теле записи/страницы:

[data ot="1" do="10"] Показываем пользователям то, что будет доступно лишь с 1 по 10 число (включительно) каждого месяца. [/data]

Видимость контента в определенное число месяца

Бывает полезным, например, если 30 числа каждого месяца вы подводите какие-то итоги. Делается как и аналогично в прошлом случае, с некоторыми модификациями:

function content_countdown_data($atts, $content = null){ extract(shortcode_atts(array( 'chislo' => '' ), $atts)); $dt=date("j"); if ($dt==$chislo) { return $content; } } add_shortcode('datas', 'content_countdown_data');

Использование в теле записи/страницы:

[datas chislo="30"] Этот контент будет доступным пользователям лишь 30 числа каждого месяца. [/datas]

Видимость контента в определенный день недели

Контент можно прятать/показывать и в определенный день недели (понедельник, вторник и т.д.)

function content_countdown_w($atts, $content = null){ extract(shortcode_atts(array( 'chislo' => '' ), $atts)); $dt=date("w"); if ($dt==$chislo) { return $content; } } add_shortcode('week', 'content_countdown_w');

Использование в теле записи/страницы:

[week chislo="0"] Этот контент будет доступен лишь в определенный день недели. Достаточно указать в параметре порядковый номер дня недели: от 0 (воскресенье) до 6 (суббота) [/week]

Видимость контента только в определенный месяц в году

Чтобы выводить контент на своем сайте в отдельном месяце года (не уверен, что кому-то надо, но все же), используем такой шорткод:

function content_countdown_month($atts, $content = null){ extract(shortcode_atts(array( 'month' => '' ), $atts)); $dt=date("n"); if ($dt==$month) { return $content; } } add_shortcode('month', 'content_countdown_month');

Использование в теле записи/страницы:

[month month="1"] Этот контент будет доступным пользователям лишь в январе месяце. Число указывать: от 1 до 12. [/month]

Видимость контента в диапазоне месяцев

А вдруг вам понадобится показывать/прятать контент лишь летом или зимой? Или в первый квартал года? Можем сделать так:

хотите сделать видимым часть контента в определенном диапазоне дат каждого месяца (скажем, с 1 по 10 число), можно использовать такой шорткод:

function content_countdown_months($atts, $content = null){ extract(shortcode_atts(array( 'ot' => '', 'do' => '' ), $atts)); $dt=date("n"); if ($dt>=$ot && $dt<=$do) { return $content; } } add_shortcode('months', 'content_countdown_months');

Использование в теле записи/страницы:

[months ot="1" do="3"] Контент будет доступен лишь в первом квартале года, с 1 по 3 месяц (включительно). [/months]

Видимость контента после наступления даты

Вы можете спрятать содержимое, которое посетители вашего сайта увидят только после наступления необходимой даты. Такой код будет востребован для информера о наступлении Нового года, об окончания конкурса, марафона на сайте и т.д.

function content_countdown_day($atts, $content = null){ extract(shortcode_atts(array( 'month' => '', 'day' => '', 'year' => '' ), $atts)); $remain = ceil((mktime( 0,0,0,(int)$month,(int)$day,(int)$year) - time())/86400); if( $remain > 1 ){ return $daysremain = "Осталось дней - <strong>($remain)</strong>"; } else if($remain == 1 ){ return $daysremain = "Остался <strong>1</strong> день"; } else{ return $content; } } add_shortcode('newyear', 'content_countdown_day');

Использование в теле записи/страницы:

[newyear month="01" day="01" year="2018"] Новый год! Давайте праздновать! [/newyear]

Если не работают шорткоды в шорткоде

Все вышеприведенные шорткоды призваны прятать/показывать некоторый HTML код на ваших страницах. Но что произойдет, если в шорткод заключить шорткод? Правильно, вложенный шорткод не будет работать. Такой конфликт случится, например, если вы попытаетесь вложить в шорткод контактную форму, например так:

[month month="1"] [соntаct-fоrm-7 id="6122" title="Контактная форма"] [/month]

Чтобы заставить шорткод работать в шорткоде WordPress нам необходимо заменить всего одну строку в функциях приведенных здесь шорткодов. Строчку:

return $content;

заменить на:

return do_shortcode($content);

Все должно работать!

    Также по этой теме читайте:

    • 10 хаков для улучшения поиска на WordPress
    • Все секреты плагина Contact Form 7
    • WordPress и нагрузка на сервер
    Facebook Twitter Google+ Pinterest Оцените материал: ПлохоТак себеСойдетХорошоОтлично. Так держать! (1 голоса, рейтинг: 5,00 из 5)
    Загрузка...
    Вячеслав - типичный интернетчик Вячеслав Скоблей (ака files) - типичный интернетчик. Скитаюсь интернетом, пишу на PHP, увлекаюсь созданием веб-сайтов на Wordpress, решаю многочисленные проблемы, которые до появления интернета не существовали...

    Специализируюсь на безопасности сайтов: защищаю сайты от атак и взломов, занимаюсь лечением вирусов на сайтах и профилактикой...

    Наверняка у Вас есть вопросы, просьбы или пожелания. Не стесняйтесь спросить, я отвечаю всегда быстро...

    Пишите, если возникли вопросы Сказать СПАСИБО!

    Быстрая обратная связь

    ×

    Тема Вашего обращения

    Ваше имя (обязательно)

    Ваш e-mail (обязательно)

    Подробности пожалуйста здесь:




    Источник

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