Здравствуйте, уважаемые читатели моего блога!
Сегодня я бы хотела поделиться с вами своим опытом работы с шотркодами wordpress.
На сегодняшний день очень много плагинов предоставляют нам возможность выводить определённых контент при помощи шотркодов. По умолчанию предполагается что вы будете вставлять эти шорткоды в статьи, записи или виджеты. Там они работают отлично.
Но часто возникает необходимость вывести шорткод в файлах самого шаблона WordPress.
Почему нельзя просто вставить шорткод прямо в файлы тем?
Например, вам нужно добавить слайдер в шаблон вашей темы или кнопки социальных сетей, или форму обратной связи.
Здесь стандартный способ вывода шорткода не сработает, так как wordpress умеет читать и расшифровывать шорткоды только если они выведены в записи, на странице или в виджете.
В противном случае он вам выведет шорткод просто как текст или не выведет совсем.
Как вывести шорткод в шаблоне темы wordpress?
Для этого нужно обернуть наш шорткод в специальную php-функцию.
1 |
<?php echo do_shortcode("[ВАШ ШОРТКОД]"); ?> |
Для вывода шорткода слайдера в файлах темы данный код будет выглядеть следующим образом:
1 |
<?php echo do_shortcode("[ml-slider]"); ?> |
То есть если в функции в скобках стоят двойные кавычки, то в коде шорткода должны использоваться одинарные и наоборот.
Как в этом примере:
1 |
<?php echo do_shortcode("[contact-form-7 id=’159’ title=’Контактная форма 1’]"); ?> |
Если здесь сделать везде одинарные или везде двойные кавычки, то произойдёт путаница и в итоге функция сработает некорректно или не сработает вовсе.
Что делать если не работает шорткод в шаблоне WordPress?
- Попробуйте вывести этот шорткод в запись и убедитесь что он рабочий. Возможно проблема не в выводе шорткода, а в самом плагине.
- Убедитесь что у вас правильно записана функция и вставлен правильных шорткод.
- Если в коде есть ковычки, то проверьте чтобы они не совпадали с ковычками в функции (если в функции стоят двойные ковычки, то в шорткоде вместо двойных должны стоять одинарные и наоборот).
- Проверьте чтобы функция не стояла внутри фрагмента PHP кода.
Например:
Получается, что в этом случае php-код открывается и закрывается внутри уже существующего php-кода. Возникает путаница с открывающимися и закрывающимися тегами.
В данном случае нужно либо писать данную функцию без
Либо закрыть php-код внутри которого вы хотите разместить шорткод а потом уже писать данную функцию.
Эта функция будет вам особенно полезна при создании всплывающей формы контактов, добавлении слайдера в шаблон, подключении плагинов оплаты и так далее.
Надеюсь что я помогла Вам разобраться с выводом шорткода в файлах шаблона wordpress. Если у вас есть вопросы или что то осталось непонятным, то напишите мне через форму комментариев и возможно мне удастся вам помочь.
С уважением Юлия Гусарь
Большое спасибо Юлия! Очень помогла Ваша статья.
Рада помочь! Спасибо за комментарий! :)
Спасибо огромное! Это просто чудо. Только руководствуясь Вашими статьями сделал себе «Обратный звонок» без дополнительных внешних сервисов. Вот этот фокус с кавычками — я готов целовать клавиатуру, за которой Вы сидели!)
Спасибо за Ваш комментарий! Он меня очень порадовал и развеселил :)
Юлия ответьте пожалуйста. Так и не могу разобраться. Вставляю этот код <?php echo do_shortcode(«[contact-form-7 404 "Not Found"]«); ?> в header.php как вы и сказали,но входит ошибка HTTP ERROR 500. Все перепробовал. Шаблон установлен Kallyas.
У вас в коде много ошибок.
выскакивает ошибка [contact-form-7 404 "Not Found"] сто раз скопировал форму, исправил ковычки- все равно не работает((((
А Вы шорткод своей формы вставляете или с сайта пример берёте? Судя по всему у Вас форму не находит, которую Вы указываете.
Спасибо, эта статья как раз вовремя попалась на глаза, не как не мог понять почему шоркод не работает в шаблоне, думал уже что какаето не совместимость с шаблоном, поменял кавычки и все заработало как по маслу)
Восхищаюсь вашими знаниями, ваш блог у меня в закладках и я часто его использую. Сейчас возникла проблема не могу найти ни где решения, может вы сможете помочь.
Стоят плагины Contact Form 7 и WooCommerce, задача чтобы со страницы каталога нажав на кнопку «Узнать цену» всплывала форма обратной связи.
Всплывающую форму обратной связи делал по вашей инструкции: //impuls-web.ru/vsplyvayushhaya-forma-obratnoj-svyazi-dlya-wordpress/ (на главной странице формы работают нормально).
Добавил в файл: functions.php темы код:
add_filter( ‘woocommerce_loop_add_to_cart_link’, ‘custom_product_link’ );
function custom_product_link( $link ) {
global $product;
echo ‘Узнать цену
[contact-form-7 404 "Not Found"]
‘;
}
В результате при нажатии на кнопку выскакивает окно, но в нем вместо формы просто шорткод, в чем может быть проблема? Скриншот: https://yadi.sk/i/RNWmM2A1h40QFQ
Здравствуйте! Вы пытаетесь в PHP коде вывести шорткод, а это неправильно. Его нужно обязательно выводить через функцию echo do_shortcode(«[ВАШ ШОРТКОД]»); иначе он не будет работать!
Нашел ответ: Html с шорткодом надо выводить через do_shortcode()
Доброе утро. Добавил штрохкод в header
для выбора города. Почему может с компьютера работать а с мобильного телефона не реагировать?
Здравствуйте! Даже не знаю! Возможно, блок, В который Вы добавляете шорткод в мобильной версии сайта скрывается?!