Кому может такое пригодится? Скрыть контент от незарегистрированных пользователей иногда необходимо для того чтобы расширить пользовательскую базу своего сайта. Так же, если у Вас например платная регистрация и та часть материала которая продается должна быть доступна только тем, кто купил доступ. Еще можно немного обратить способ и например, для простых посетителей показывать рекламу, а те кто вошел на сайт не будут видеть ее. В общем все зависит от Вашей фантазии и сложившихся нужд.
Для того чтобы скрыть например часть содержимого внутри темы WordPress, то нужно ту часть которая будет скрываться от не авторизованных пользователей, заключить вот в такой код:
<?php if ( is_user_logged_in() ) { echo "Содержание для зарегистрированных пользователей"; } else { echo "Чтобы увидеть текст, Вам нужно авторизоваться"; } ?>
Это условие, которое говорит, что если пользователь вошел в аккаунт, то показывать содержимое из второй строки, если нет то из четвертой. Если Вы хотите просто скрывать и не выводить больше никаких сообщений, то есть не авторизованные будут видеть пустоту, то удалите третью и четвертую строку. Получится так:
<?php if ( is_user_logged_in() ) { echo "Содержание для зарегистрированных пользователей"; } ?>
Теперь представим ту ситуацию, о которой я писал выше, обратное условие где авторизованные не должны видеть например рекламу или кнопку входа и тд. Код будет таким:
<?php if ( !is_user_logged_in() ) { echo "Сюда код рекламы или что-то еще"; } ?>
Мы добавили восклицательный знак перед функцией, которая теперь служит отрицанием. Внутри данных кодов все добавляется по правилам PHP. Если Вам сложно это, то можете разорвать код и вставлять обычным способом, например если надо добавить javascript .
<?php if ( !is_user_logged_in() ) { ?> // Тут код рекламы, яваскрипт и тд. <?php } ?>
Такой фокус проворачивается и с кодами что выше, то есть вместо echo и содержимого в скобках, ставите закрывающий и открывающий тег PHP, а между ними все что угодно.
?> Сюда что угодно <?php
Вот например еще самый первый код из статьи.
<?php if ( is_user_logged_in() ) { ?> // Содержание для зарегистрированных пользователей"; <?php } else { ?> // Чтобы увидеть текст, Вам нужно авторизоваться <?php } ?>
Думаю, тут все понятно. Теперь давайте рассмотрим случай, когда нужно скрыть часть записи, то есть часть текста Вашей статьи. Тут я предлагаю использовать шорткоды. Мы создадим функцию с шорткодом и при написании статьи Вы просто будете заключать в этот шорткод часть текста, который будет скрываться. Так же в конце будет небольшой бонус который облегчит Вам использование данного шорткода.
Чтобы создать шорткод, Вам нужно открыть файл пользовательских функций из Вашей темы WordPress - function.php и добавить в него код приведенный ниже. Делать это нужно в самом конце, перед закрывающим тегом PHP.
function only_reg_info($atts,$content = null) { if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ){ return $content; } else { return '<p>Чтобы увидеть текст, Вам нужно авторизоваться</p>';} } add_shortcode( 'forreg', 'only_reg_info' );
В данной функции мы используем схожее условие, как и в начале статьи. В четвертой строке в одинарных скобках тот текст, который увидят не зарегистрированные, не авторизованные пользователи. Можете поменять на что-то свое или добавить туда код, в общим на Ваше усмотрение.
В шестой строке указываем имя шорткода - forreg. Если хотите можете поменять на свое, но тогда не забудьте его менять и вдругих кодах которые будут указаны ниже в статье, дабы все продолжало работать, а Вы в гневе не писали мне что - НЕ РАБОТАЕТ!!!.
Теперь при написании статьи, Вы просто заключаете в шорткод forreg нужный текст, который спрячется.
[forreg] //текст который спрячется для не авторизованных посетителей. [/forreg]
Небольшой бонус
Как и писал выше, хочу еще добавить небольшой бонус, который немного облегчит Вам постоянное использование шорткода. Чтобы каждый раз не печатать в ручную данный шорткод, предлагаю добавить кнопку в редактор добавить кнопку в текстовый HTML-редактор WordPress.
Для этого в том же function.php, после функции с шорткодом добавьте еще вот такую функцию:
function add_new_quicktags() { if (wp_script_is('quicktags')) : ?> <script type="text/javascript"> if (QTags) { QTags.addButton( 'forreg', 'Для зарег.', '[forreg]', '[/forreg]', 'Для зарег.', '', 1 ); } </script> <?php endif; } add_action( 'admin_print_footer_scripts', 'add_new_quicktags' )
Теперь в админке в Текстовом редакторе записи, появится кнопка с названием - Для зарег. Я специально выделил, что в текстовом редакторе, а не в визуальном, потому как чтобы добавить кнопку и в визуальный редактор, нужно пройти все круги преисподней и это еще одна огромная статья, которую когда-то я, может и напишу :). Так что нужно переключится на текстовый и там уже ее нажимать.
Там увидите в начале вот такую кнопочку:
Перед тектом что нужно скрыть нажимаете кнопку один раз - ставится открывающий тег:
После жмете еще раз и ставится закрывающий тег.
Кнопка работает как и остальные кнопки, сложного ничего нет. Теперь можете спокойно скрыть часть для незарегистрированных посетителей сайта.
Лично я очень часто пользуюсь этой возможностью при выполнении заказов и данные способы не раз меня выручали. Если они выручат и Вас, значит я не зря написал такую большую статью.
На этом все, спасибо за внимание. 🙂