Вставка шорткода в шаблон WordPress или почему не работает шорткод в файлах темы?

вывод шоткода в шаблоне wordpress

Здравствуйте, уважаемые читатели моего блога!

Сегодня я бы хотела поделиться с вами своим опытом работы с шотркодами wordpress.

На сегодняшний день очень много плагинов предоставляют нам возможность выводить определённых контент при помощи шотркодов. По умолчанию предполагается что вы будете вставлять эти шорткоды в статьи, записи или виджеты. Там они работают отлично.

Но часто возникает необходимость вывести шорткод в файлах самого шаблона WordPress.

Почему нельзя просто вставить шорткод прямо в файлы тем?

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

Как вывести шорткод в шаблоне темы wordpress?

Для этого нужно обернуть наш шорткод в специальную php-функцию.

Для вывода шорткода слайдера в файлах темы данный код будет выглядеть следующим образом:

Обратите внимание, что если у вас внутри самого шорткода есть кавычки, то они не должны совпадать с кавычками функции echo do_shortcode(» «);

То есть если в функции в скобках стоят двойные кавычки, то в коде шорткода должны использоваться одинарные и наоборот.
Как в этом примере:

Если здесь сделать везде одинарные или везде двойные кавычки, то произойдёт путаница и в итоге функция сработает некорректно или не сработает вовсе.

Что делать если не работает шорткод в шаблоне WordPress?

  1. Попробуйте вывести этот шорткод в запись и убедитесь что он рабочий. Возможно проблема не в выводе шорткода, а в самом плагине.
  2. Убедитесь что у вас правильно записана функция и вставлен правильных шорткод.
  3. Если в коде есть ковычки, то проверьте чтобы они не совпадали с ковычками в функции (если в функции стоят двойные ковычки, то в шорткоде вместо двойных должны стоять одинарные и наоборот).
  4. Проверьте чтобы функция не стояла внутри фрагмента PHP кода.

Например:

Вставка шорткода в шаблон WordPress

Получается, что в этом случае php-код открывается и закрывается внутри уже существующего php-кода. Возникает путаница с открывающимися и закрывающимися тегами.
В данном случае нужно либо писать данную функцию без

Вставка шорткода в шаблон WordPress

Либо закрыть php-код внутри которого вы хотите разместить шорткод а потом уже писать данную функцию.

не работает шорткод в файлах темы

Эта функция будет вам особенно полезна при создании всплывающей формы контактов, добавлении слайдера в шаблон, подключении плагинов оплаты и так далее.

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

С уважением Юлия Гусарь

Читайте также:

Подписаться на рассылку

14 комментариев

  1. Большое спасибо Юлия! Очень помогла Ваша статья.

    • Рада помочь! Спасибо за комментарий! :)

  2. Спасибо огромное! Это просто чудо. Только руководствуясь Вашими статьями сделал себе «Обратный звонок» без дополнительных внешних сервисов. Вот этот фокус с кавычками — я готов целовать клавиатуру, за которой Вы сидели!)

    • Спасибо за Ваш комментарий! Он меня очень порадовал и развеселил :)

  3. Юлия ответьте пожалуйста. Так и не могу разобраться. Вставляю этот код <?php echo do_shortcode(«[contact-form-7 404 "Not Found"]«); ?> в header.php как вы и сказали,но входит ошибка HTTP ERROR 500. Все перепробовал. Шаблон установлен Kallyas.

    • У вас в коде много ошибок.

  4. выскакивает ошибка [contact-form-7 404 "Not Found"]   сто раз скопировал форму, исправил ковычки- все равно не работает((((

    • А Вы шорткод своей формы вставляете или с сайта пример берёте? Судя по всему у Вас форму не находит, которую Вы указываете.

  5. Спасибо, эта статья как раз вовремя попалась на глаза, не как не мог понять почему шоркод не работает в шаблоне, думал уже что какаето не совместимость с шаблоном, поменял кавычки и все заработало как по маслу)

  6. Восхищаюсь вашими знаниями, ваш блог у меня в закладках и я часто его использую. Сейчас возникла проблема не могу найти ни где решения, может вы сможете помочь.

    Стоят плагины 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(«[ВАШ ШОРТКОД]»); иначе он не будет работать!

  7. Нашел ответ: Html с шорткодом надо выводить через do_shortcode()

  8. Доброе утро. Добавил штрохкод в header
    для выбора города. Почему может с компьютера работать а с мобильного телефона не реагировать?

    • Здравствуйте! Даже не знаю! Возможно, блок, В который Вы добавляете шорткод в мобильной версии сайта скрывается?!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_good.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif 
//impuls-web.ru/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif