Шорткод wordpress, как вывести свою программу на страницу сайта
Здравствуйте уважаемые начинающие программисты.
Что такое шорткод (shortcode)?
Научно выражаясь — это простейшая функция для микрокодов, которую можно использовать как в редакторе WordPress, так и в виджетах, и в файлах шаблона.
А по простому — это маленький php код, в который можно «засунуть» любой html элемент, вставить всё это в файл functions.php, а затем с помощью совсем маленькой метки, выводить этот элемент в любой части контента.
Мало того. Этому html элементу, можно задать class, и в файле style.css сделать любое внешнее оформление.
Представляете перспективы?
Можно каждую статью какой либо рубрики, начинать логотипчиком этой рубрики, и не грузить для этого текст лишней картинкой.
Достаточно будет один раз вставить её в функцию шорткода, а затем в начале каждой статьи рубрики, ставить соответствующую метку, и WordPres динамически подгрузит туда эту картинку.
Можно для каждой рубрики написать отдельное меню, вставить его в код, а затем поставить метки только в статьях нужной рубрики.
Вот эти метки и имеют название «шорткод».
Теперь давайте смотреть, как это чудо выглядит, и как работает.
function main_cod() { return'Привет'; } add_shortcode('shortcod', 'main_cod');
Вот и весь основной код. Разберём по косточкам.
В первой строке — пользовательская функция. Пользовательская — это значит, что название ей Вы придумываете самостоятельно.
Подробнее про то как даются названия, и вообще про функции php можно почитать в статье Функции php.
Во второй строке, в одиночных кавычках, вставляется то, что Вы хотите выводить на страницах сайта.
У меня там просто слово Привет, но вместо него, как я уже говорил, можно вставить любой html элемент. Ну например бегущую строку:
function main_cod() { return'<marquee>бежим бежим</marquee>'; } add_shortcode('shortcod', 'main_cod');
В третьей строке, в скобках, в первых одиночных кавычках, указывается имя шорткода, который Вы будете вставлять в контент, а во вторых — имя функции, которая будет этот шорткод выводить.
Сам же он выглядит так:
[shortcod]
Имя у него может быть любым, не обязательно именно shortcod. Желательно, чтоб это имя отображало то, что данный шорткод выводит.
Ведь когда таких кодов будет несколько, можно и запутаться, который для чего. Да и название функции лучше давать такое, чтоб было понятно, что она выводит.
В функцию можно прописать и сразу несколько html элементов. Например меню одним тегом не сделаешь.
function main_cod() { return' <ul class="meny"> <li class="html"><a href="http://address post">Курс HTML</a> <ul> <li><a href="http://address post">Урок 1</a></li> <li><a href="http://address post">Урок 2</a></li> <li><a href="http://address post">Урок 3</a></li> <li><a href="http://address post">Урок 4</a></li> </ul> </li> </ul>'; } add_shortcode('shortcod', 'main_cod');
Оформить это меню можно в файле style.css, так как тегам ul и li заданы классы. Но можно прописать стили прямо в теле функции, добавив туда тег style.
function main_cod() { return' <style> .meny{ background: #fdeaa8; padding: 2px; border-radius: 5px; box-shadow: 0px 0px 0px 2px #0ea8f4; width: 785px; height: 35px; } .html{ float: left; margin: 3px 3px 3px 3px; width: 190px; } </style> <ul class="meny"> <li class="html"><a href="http://address post">Курс HTML</a> <ul> <li><a href="http://address post">Урок 1</a></li> <li><a href="http://address post">Урок 2</a></li> <li><a href="http://address post">Урок 3</a></li> <li><a href="http://address post">Урок 4</a></li> </ul> </li> </ul>'; } add_shortcode('shortcod', 'main_cod');
Код меню я представил не полностью, чтоб не занимать место в статье, только для примера, чтоб понять как работает шорткод, что и является целью этой статьи.
Конечно же в стили нужно обязательно добавить позиционирование, так как шорткод будет вставлен в текст в редакторе, а меню должно быть где-то сбоку от текста.
Это были примеры того, как можно применять шорткод с пользовательскими функциями.
Теперь несколько примеров со встроенными php функциями. Напомню, что встроенная — это функция уже имеющаяся в языке php, и решающая определённую задачу.
Скрываем часть контента от незарегистрированных пользователей
В файл functions.php, в самый конец вставляется следующий код:
function member_check_shortcode() { if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) return $content; return ''; } add_shortcode('member', 'member_check_shortcode');
Закрываемый текст оборачивается в конструкцию
[member]Закрываемый фрагмент контента[/member]
Функция member_check_shortcode проверяет регистрацию посетителя Вашего сайта, и в зависимости от этого скрывает или нет выделенный фрагмент контента.
Что и для чего нужно скрывать, я думаю всем понятно. Типичное увеличение подписной базы. А вот для чего нужно следующее действие?
Показываем часть контента только незарегистрированным пользователям
function guest_check_shortcode( $atts, $content = null ) { if ( !is_user_logged_in() && !is_null( $content ) && !is_feed() ) return $content; return ''; } add_shortcode('guest', 'guest_check_shortcode');
Соответственно шорткод будет выглядеть так:
[guest]Показываемая часть контента[/guest]
Подумали для чего это нужно? Правильно, чтоб не мозолить глаза зарегистрированных пользователей формой подписки.
Желаю творческих успехов!