php do shortcode wordpress
Как правильно вставить шорткод [shortcode] в PHP-файл или шаблон сайта
Обнаружила недавно, что многие не знают, как вставлять шорткоды в вордпресс или вывести скрипт на сайте с иным движком. А те кто знают, куда вставлять шорткод в вордпресс, и как в коде шаблона темы сайта сделать PHP вывод шорткода, нередко допускают серьезные ошибки. И в итоге потом они пеняют на то, что либо плагин у них или шорткод не работает, либо вообще что-то с шаблоном сайта не так. Но, на самом деле, все очень просто и ошибки случаются в основном из-за невнимательности или незнания синтаксиса и пунктуации.
Как вставить шорткод в PHP файл? Быстрый ответ
Специально для тех, кто и так все знает, а просто ищет быстрый ответ, как вставить шорткод в шаблон wordpress или на другой движок, то вот, пожалуйста, используйте этот код:
Однако не забывайте про пунктуацию! Кавычки в вашем шорткоде и в php коде должны быть разными.
Т.е., если в вашем шаблоне сайта на wordpress, вы используете такой же шорткод, но с двумя кавычками внутри ( [«…»] ), и в вашем php-коде вы также используете двойные кавычки ( «[…]» ), то нужно одни из них поменять на одинарные. Именно из-за таких мелких причин часто не работают шорткоды в wordpress. Подробнее об этом ниже.
Что такое шорткод (shortcode), и для чего он нужен?
Shortcode – это от англ. «короткий код». Используется он, в основном, при создании плагинов или модулей, предназначенных для работы с системами управления контентом (CMS), например, WordPress, Joomla и др. Проще говоря, этот короткий код является неким ярлыком, который, при добавлении на сайт, подтягивает за собой весь большой код из плагина.
Выглядит шорткод обычно так: или так
или даже просто в одно слово
В любом случае, это не так важно, так как главное знать принцип добавления шорткода на сайт.
Как это работает?
Все очень просто. Допустим, вы имеете сайт на движке WordPress, у вас стоит какой-нибудь простой шаблон (дизайн) сайта, но чтобы его украсить, вы решили поставить на него слайдер, в котором ваши фотографии будут перелистываться сами. Сделать это очень просто. Для этого нужно скачать плагин слайдера из общей библиотеки плагинов WordPress, залить туда нужные фото, и плагин выдаст вам не огромный код слайдера по типу:
а всего лишь вот такой короткий код (Shortcode) в одну строку:
Вставив подобный этому
шорткод на страницу сайта на wordpress или в виджет, ваш плагин начнет работать и будет генерировать верхний большой код слайдера, в результате чего, вы получите ваш слайдер на страницах сайта.
А как вставить шорткод слайдера прямо в шаблон wordpress в php-код?
Если нужно добавить слайдер в тему wordpress непосредственно в код, для этого разработчики данного плагина написали рядом (рис. выше) функцию шорткода на языке php:
Такую «функцию» шорткода можно вставить в php-файл в нужное вам место на сайте. Например, в header.php, где-нибудь после body или, может быть, в sidebar.php, а лучше всего в файл шаблона страницы (он может называться как-нибудь так content-page.php), в результате, вы получите тот же слайдер, но уже встроенный в дизайн самого сайта.
Однако нужно быть очень внимательными при выводе шорткода в шаблоне wordpress в php-файлах. Для этого нужны хотя бы элементарные знания php. Поскольку, если его «не туда» вставить в php-файле, то на сайте будет выведена ошибка.
Как вывести шорткод в php в wordpress, если нет готовой php-функции в плагине?
Бывают плагины, в которых их разработчики решили не указывать готовую php-функцию для вставки шорткода в файлы шаблона сайта (как было в прошлом примере), а указывают лишь шорткод. Вот как, например, в этом плагине слайдера:
Что делать в этом случае, ведь нам нужно вставить шорткод в шаблон wordpress и непосредственно в php-файл на сайте? В таком случае необходимо просто самим обернуть шорткод php-функцией вывода, которая была показана в самом начале статьи. В результате, с учетом нашего шорткода, у нас получиться вот такой вид php-функции:
Как легко вставить шорткод в WordPress: в шаблон, в страницу и в виджет
Вставить шорткод в запись или страницу
Вывести шорткод в записях и страницах WordPress просто. Открываем редактирование записи и делаем пару действий.
В классическом редакторе WordPress
Если вы любите пользоваться классическим редактором, то входим в статью и во вкладке визуально в необходимое место нужно вставить. Разберу на примере форм от плагина Contact Form 7.
Можно через предварительный просмотр WordPress увидеть, что отображается на экране.
Не важно где выводить во вкладке Визуально или Текст (html редактор), шорткод сработает. Перед каждой проверкой очищаем кэш.
В Gutenberg
В Gutenberg существует специальный блок. Создаем запись, либо меняем старую и смотрим скриншот.
На экране появится новый блок, в который заносим скопированную конфигурацию.
Нажимаем на предварительный просмотр и видим ту же картину. Простые методы прошли переходим к более сложным.
В плагине Elementor
В elementor есть специальная кнопка чтобы вставить шорткод, в панели находим соответствующий раздел.
В его настройках вводим конфигурацию и сохраняем, автоматически elementor обработает запрос и выведет результат на экран.
Вставить напрямую в шаблон
Существует ситуация, когда нужно вывести не в контенте, а в коде шаблона, тогда переходим к более кардинальным мерам.
С помощью функций темы
Чтобы не вносить правки в файлы темы для начала проверим, может в настройках есть возможность записи кодов в разные места ресурса. На тестовом блоге есть шаблон GoVideo, в нем есть специальный раздел, чтобы прописывать коды в подвал. Захожу Внешний вид > Настроить.
Далеко не все темы поддерживают вставку текста в разные части документа. Если такой области нет, то переходим к следующему пункту.
В PHP документе
В WordPress существует специальная PHP функция, если просто вставить в шаблон, то на экране ничего не появится. Вот код, который нужно применить:
То есть в нашем случае получится такая картина:
Хочу разместить форму обратной связи под постами. Какой файл у вас отвечает за вывод того или иного элемента предсказать не могу. В моем случае content-single.
В виджетах
По умолчанию шорткоды для вставки в виджеты запрещены, потому что часто блог заклинивает из-за ошибок и вернуть работоспособность становится трудно.
Разумное решение, безопасность превыше всего, но если набрались смелости залить в vidgets WordPress, то читаем дальше.
Виджет текст
С помощью модуля Текст можно вставить шорткод, но это касается WordPress версий 5.0 и выше. Смотрим на скриншот, перетаскиваем его в активную зону и сохраняем изменения.
Текст
Смотрим, если сработало, то дальше можно не читать, если нет, то продолжаем. Не знаю от чего зависит, но иногда Текст не срабатывает, из-за того что WordPress запрещает вывод шорткода, тогда идем в файл Function активной темы, помещаем следующее правило и сохраняем.
Фильтр
Проделываем манипуляции сначала, и если опять не сработало, то применяем следующий способ. Для лучшего понимания материала приложу свой видео обзор.
С помощью плагина
Существует отличный плагин Shortcode Widget скачиваем или устанавливаем из админки WordPress, так он выглядит в поиске.
Заходим Внешний вид > Виджеты, там появиться новый раздел Shortcode Widget. Перетаскиваем в активную зону, прописываем и сохраняем
Это 100% способ, если он не помог, то причина скорее всего в ядре WordPress. На этом закончу в статье разобрались как вставить шорткоды в WordPress различными методами и способами, напишите пожалуйста, статья вам помогла?
WordPress.org
Search content for shortcodes and filter shortcodes through their hooks.
Contents
Description # Description
If there are no shortcode tags defined, then the content will be returned without any filtering. This might cause issues when plugins are disabled but the shortcode will still show up in the post or content.
Parameters # Parameters
( string ) (Required) Content to search for shortcodes.
( bool ) (Optional) When true, shortcodes inside HTML elements will be skipped.
Default value: false
Return # Return
(string) Content with shortcodes filtered out.
More Information # More Information
If there are no shortcode tags defined, then the content will be returned without any filtering. This might cause issues if a plugin is disabled as its shortcode will still show up in the post or content.
Source # Source
Related # Related
Uses # Uses
Search only inside HTML elements for shortcodes and process them.
Retrieve the shortcode regular expression for searching.
Used By # Used By
Search content for shortcodes and filter shortcodes through their hooks.
Apply Ajax handlers to a string.
Outputs the content for the current Text widget instance.
Создание шорткодов в WordPress CMS
Что такое шорткоды
Начиная с версии 2.5, разработчики WordPress ввели понятие «Shortcodes API». Этот функционал позволяет создавать и использовать макрокоды в страницах сайта или в записях блога. Например, простая и короткая запись добавит на странице целую фотогалерею.
Более подробно прочитать о шорткодах и узнать, как создавать простые шорткоды, вы можете из документации WordPress.
Подготовка почвы
Прежде чем начать создавать что-либо, предлагаю свой вариант размещения файлов:
Практически в каждом руководстве предлагают создавать шорткоды прямо в файле functions.php. Скажу сразу: я — противник такого подхода. Вместо этого настоятельно рекомендую вынести все шорткоды в отдельный файл (includes/shortcodes.php) и подключить его в functions.php одной строкой. Это значительно разгрузит functions.php и сделает код более читабельным.
Заметка: WordPress, конечно, поддерживает подключение файлов через require, но очень не рекомендует делать этого. Вместо этого предлагается использовать get_template_part().
Подключение скриптов
Многие начинающие разработчики очень часто совершают эту ошибку — подключают скрипты, необходимые для работы того или иного шорткода, сразу при объявлении шорткода. Т. е. скрипты загружаются всегда, даже если этого шорткода нет на странице.
Пример такой реализации:
Это полностью рабочий вариант, но скрипт будет загружаться на каждой странице, даже если он там не нужен (т. е. нет шорткода).
Во избежание таких ситуаций, предлагаю пользоваться следующим подходом:
Пример такой реализации:
В отличие от предыдущего варианта реализации, этот шорткод инициализируется, но все скрипты подгружаются только при наличии шорткода на странице.
Вложенные шорткоды
Есть еще пара проблем, с которыми могут столкнуться начинающие разработчики:
Теперь — более детально.
Создание многоуровневого шорткода
Проблема заключается в том, что такой шорткод состоит из нескольких более мелких шорткодов и необходимо предотвратить возможность использования их как отдельных шорткодов (кроме случаев, когда это необходимо).
Возьмем к примеру, шорткод, который создает прайсинг таблицу. Для этого необходимо подготовить три отдельных шоркода:
[price]
— [plan title=’Plan 1’ price=’99’]
— [option] Option 1 [/option]
— [option] Option 2 [/option]
— [option] … [/option]
— [/plan]
— [plan title=’Plan 2’ price=’499’]
— [option] Option 1 [/option]
— [option] Option 2 [/option]
— [option] … [/option]
— [/plan]
…
[/price]
В данном примере используется три шорткода: [price] [plan] [option].
add_shortcode( ‘price’, ‘price_code’ );
add_shortcode( ‘plan’, ‘plan_code’ );
add_shortcode( ‘option’, ‘option_code’ );
Для предотвращения использования внутренних шорткодов в качестве отдельных предлагается следующая схема:
Т. е. вывод кода на страницу происходит только во внешнем шорткоде, внутренние же просто возвращают полученные данные. Пример такой реализации приведен ниже.
Описание функции внешнего шорткода:
Описание функций внутренних шорткодов:
При этом подходе шорткод будет работать только в сборе, т. е. при правильном использовании, в других случаях ничего не будет выведено на экран (соответственно, ничего не сломается).
Конечно же, вы можете еще оптимизировать и усовершенствовать этот шорткод, но все же, думаю, основную идею продемонстрировать мне удалось.
Повторяющиеся шорткоды
Проблема заключается в следующем: нужно внутри шорткода использовать такой же шорткод. Наиболее частым примером в моей практике был шорткод для создания колонки. Т.е., к примеру, нужно реализовать разделение страницы на 2 части с помощью колонок и в первую колонку разделить еще на 2 колонки.
[column_half]
[column_half] Content [/column_half]
[column_half] Content [/column_half]
[/column_half]
[column_half] Content [/column_half]
К сожалению, для WordPress уже такая вложенность “не по зубам”. Верстка разлетится уже на втором контенте. Происходит это потому что при открытии шорткода WordPress сразу же ищет вторую (закрывающую) часть этого шорткода, т.е. в данном примере первая колонка будет закрыта на первом же вложенном шорткоде.
Для решения этой проблемы, к сожалению, нет других вариантов, нежели просто добавить новые шорткоды. Но, переписывать функции нет смысла, можно просто инициализировать шорткод на уже имеющиеся функции:
Заключение
В данной статье я рассмотрел наиболее частые проблемы, с которыми сам когда-либо сталкивался. Если же у вас есть что добавить, исправить, либо предложить свой вариант решения той или иной проблемы, не стесняйтесь писать в комментариях к этой статье.
Автор: Дмитрий Кабаков, Senior Front-end Developer.
Как применять do_shortcode в WordPress
Вступление
Шорткоды в WordPress дают вам дополнительную функциональность и позволяют встраивать контент в страницы, записи и боковые панели. Много плагинов и тем используют шоркоды и дают возможность пользователям динамически добавлять контент в свой блог. Чтобы лучше показать, как работают шоркоды возьмём в качестве примера шорткод формы контактов Contact Form 7:
Как видите это очень просто. У нас есть макрос Contact Form 7 в квадратных скобках. Макрос генерируемые плагином Contact From 7. WordPress заменит макрос контентом, который выдаст PHP-функция. Если мы добавим шорткод к записи, странице или боковой панели, WordPress покажет вам форму контактов.
Но что, если вы захотите использовать шорткоды WordPress в файлах темы? В таком случае, можно воспользоваться функцией WordPress do_shortcode.
Давайте углубимся и посмотрим, как использовать функцию WordPress do_shortcode.
Что понадобится
Прежде чем приступить к выполнению руководства, проверьте наличие:
В этом руководстве рассказывается о том, как редактировать файлы темы WordPress. Поэтому перед началом настоятельно рекомендуем вам сделать полный бекап вашего WordPress сайта и использовать дочернюю тему WordPress.
Использование функции WordPress do_shortcode
Теперь, когда вы уловили основную идею использования шорткодов в WordPress, давайте посмотрим, как можно используя шорткоды, усовершенствовать функциональность вашего сайта на WordPress.
Например, предположим, что вы хотите вставить плагинWordPress-а Contact Form 7 где-нибудь в заголовочной части(хедере) вашей темы. Но проблема в том, что у вас нет никакого виджета в этой области.
Прежде всего, понадобится взять шорткод плагина, который вы хотите использовать. Как пример, мы будем использовать тот же шорткод Contact Form 7:
Так как в нашей теме нет виджета в заголовке страницы и мы не может просто скопировать и вставить шорткод туда, мы воспользуемся функцией WordPress do_shortcode. Она выглядит так:
Теперь добавим Contact From 7 в наш хедер, для этого нам нужно отредактировать файл header.php. Как уже упоминалось, настоятельно рекомендуем сделать бекап вашего WordPress сайта перед тем, как вносить изменения в основные файлы WordPress и использовать дочернюю тему WordPress.
В следующих шагах показано как редактировать файлы WordPress через Файловый Менеджер Hostinger, однако, можно также воспользоваться FTP клиентом (руководство по этой теме):
Примечание: В большинстве случаем, редактирования основных файлов темы ломают шаблон WordPress. Скорее всего нужно будет внести изменения в CSS, чтобы сделать более привлекательный вид для WordPress. Обязательно ознакомьтесь с нашими руководством о том, как проверить стили CSS при помощи браузера (англ.) и download CSS cheatsheet (англ.).
Заключение
Надеемся, теперь стала понятна вся польза шорткодов и их широкие возможности в улучшении привлекательности вашего сайта. Также надеемся, что руководство было изложено понятным языком и теперь ясно, как пользоваться функцией WordPress do_shortcode. Всё же, если у вас остались какие-то вопросы, пишите их в комментариях к статье ниже.
Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.
- php display startup errors
- php do while пример