Не работают шорткоды wordpress. Как включить шорткоды у виджетах

не работают шорткоды wordpress

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

Навигация по странице:

Я уже описывал как можно на  wordpress создать шорткод и для чего они нужны. Сейчас я расскажу вам как можно выводить шорткоды.

Преимущества шорткодов перед PHP вставкой

Многие начинающие программисты спрашивают:

Зачем усложнять код? Почему бы просто не использовать обычные PHP вставки в шаблон или html / javascript вставки в редактор?

Ответ на эти вопросы банально прост:

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

Как вывести шорткод wordpress

к менюСамый простой способ вывода шорткода - это вставить его в описание поста или страницы. Также, шорткоды можно вставлять в текстовые виджеты вашего сайдбара или других областей сайта.

Если вам нужно вызвать шорткод в php, вы можете использовать функцию WordPress do_shortcode

<?php echo do_shortcode('[myshortcode txt="test"]'); ?>

И последний способ вставки шорткода в пхп код WordPress:

<?php echo apply_filters( 'the_content','[myshortcode txt="test"]'); ?>

Вот такие способы вывода шорткодов имеет WordPress.

 

Как вызвать wordpress шорткод в шаблоне

к менюВыше я уже описывал этот момент. Для инициализации шорткода WordPress можно воспользоваться штатной функцией do_shortcode или фильтром the_content.

Отличия между ними в том, что последний обернет ваш шорткод в тег <p> и может добавить кучу ненужных кодов, если на эту функцию завязанные какие нибудь хуки от плагинов. (например похожие посты) Функция do_shortcode выведет wordpress шорткод в шаблоне в том виде, в котором шорткод записан. Это очень удобно.

Предположим у нас есть шорткод [myTestCode] и мы хотим вызвать его в шаблоне. Для этого нам нужно написать вот такой несложный код:

<?php echo do_shortcode('[myTestCode]'); ?>

Если нам нужно получить шорткод у PHP переменную это делается вот так:

<?php $str=do_shortcode('[myTestCode]'); ?>

 

Не работают шорткоды wordpress

к менюБывают случаи когда шорткод wordpress - не работает. Первой причиной такой проблемы может стать неправильное написание ( создание ) шорткода. WP будет блокировать сообщения об ошибке и будет довольно трудно догадаться почему шорткод не работает. Вот тут описано как можно правильно создать Получить ссылку на (шорткод WordPress)

Как включить шорткоды у виджетах wordpress

к менюИногда шорткоды для виджетов банально выключенные, и вместо запуска динамического контента вы получаете статический вывод вашего текста в текстовом виджете сайдбара. Для решения этой проблемы достаточно закинуть в файл functions.php вашей темы, в самый конец до ?> такую строчку:

add_filter('widget_text', 'do_shortcode');

Вот и все, теперь в текстовых виджетах будут работать шорткоды, можете наслаждаться.

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

Комментарии к записи «Не работают шорткоды wordpress. Как включить шорткоды у виджетах»:
  1. Александр:

    Здравствуйте. А как подключить обработку шорткода в вариациях товара?
    Шорткод обрабатывается везде, кроме как в вариациях.
    Использую Global Content Blocks и WP e-Commerce Grid View LITE

    • admin:

      Добрый день.
      Нужно зайти в шаблон, найти где идет вывод вариации и там наверное вывод екста не пропускается через функцию do_shortcode, нужно обернуть вывод в эту функцию и уже потом только делать echo.

  2. Карен:

    Добрый день!
    Не работает корзина, пишет -

    Страница не содержит шорткода: [woocommerce_cart]
    спасибо

    • admin:

      Добрый день.
      НУжно забросить этот шорткод на страницу, которую вы определили как корзина, думаю проблема тогда решится.
      Если шорткод заброшен но толку нет, значит ваша тема не запускает шорткоды, нужно смотреть тему, какой файл отвечает за корзину и заставить функцию do_shortcode работать.

  3. Ярослав:

    Подскажите в чем может быть проблема? При копировании шорткода и вставки его в материал, после сохранения он отображается просто, как текст. Использую шорткод плагина Wp-pro-quiz

    • admin:

      Добрый день.
      1) возможно такой шорткод не существует, например ошибка в одной букве.
      2) возможно текст выводится без применения do_shortcode, например echo или the_excerpt.
      как вариант можно обернуть вывод текста в функцию do_shortcode

  4. Сергей:

    Добрый вечер. Весь вечер провозился с шорткодом real3dflipbook. Полученный код копирую, вставляю на страницу, в итоге ничего не видно. Он просто не отображается, потому что текстового кода не видно, стоит убрать скобки, появляется текст, обновил WordPress, скачал последнюю версию плагина, в чем может быть проблема? Спасибо.
    Шорткод - [real3dflipbook id_1]

    • admin:

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

  5. Виталий:

    Сделал свой шорткод, который работает везде, кроме главной страницы. Тема illdy. Выводится не пустота, а сама строчка [myshortcode...]. Если выводить через php код то шорткод выводится, а если через режим редактирования то не работает. В чем проблема и куда смотреть?

    • admin:

      Добрый день. Смотрите через какой код вы выводите текст. Возможно к этой функции не прикреплен do_shortcode, например the_excerpt

  6. Сергей:

    Использю дочернюю тему GeneratePress.

    В файле functions.php создал простой шорткод (см. ниже)

    На отдельных страницах и в отдельных записях он работает.

    Но не работает на страницах вывода рубрик (категорий), когда выводится список постов конкретной рубрики. При этом, код шорткода не отображается, как было бы, если шорткода в системе не было бы. Вместо него просто пустота!

    function author_vkapk() { // Функция Шорткода для добавления авторства статьи или практики.

    $current_post_id = get_the_ID(); // Получаем ID конкретного поста.

    $category = get_the_category($current_post_id); // Получаем массив категорий поста.
    $category_ID = $category[0]->cat_ID; // Получаем ID первой категории.
    ...

    }
    add_shortcode('author-vkapk', 'author_vkapk');
    add_filter('widget_text', 'do_shortcode');

    • admin:

      Добрый день.
      Если не секрет, то какой ответ дает вот эта строчка на странице категории $current_post_id = get_the_ID(); // Получаем ID конкретного поста.

      Намек понятен??? В такой способ вы не сможете получить ID поста, попробуйте print_r(get_the_ID()); в ответе будет пусто 🙂

  7. Антон:

    Здравствуйте, создал свою тему, а она почему то не хочет видеть шорткоды в записях и страницах. Как подключить функционал?

    • admin:

      Добрый день.
      Вот тут я описывал https://help-wp.ru/kak-sozdat-shortkod-shortcode-i-kak-zapisat-peremennye-v-add_shortcode-wordpress/ как делать шорткоды и куда нужно вставлять код. Вроде все просто и понятно, должно работать в любой теме.

      !! Но если у вас текст выводится не через the_content или другую функцию, к которой прикручен do_shortcode , то вместо шорткодов у вас будет обычный текст. Нужно переписать вывод текста !!

  8. Amir Gumerov:

    Спасибо большое

  9. Максат:

    Здравствуйте. Пытаюсь вставить в страницу с рубриками (Бизнес,финансы,право к примеру) шорткод от revslider [rev_slider alias="main"]
    но на сайте выходит сам шорткод ввиде текста но не выводится слайдер. Что можете посоветовать как сделать так что бы на каждой рубрике выводился свой слайдер?
    Сайт (-url-)

    • admin:

      Добрый день.
      Если у вас выводится код шорткода текстом, значит шорткод не срабатывает. Надо искать причины, например такой шорткод не существует (ошибка в одной или нескольких буквах) или шорткод подключался через плагин, но плагин отключен. Или шорткод не настроен, хотя он тогда все равно должен сработать.

  10. Елена:

    Добрый вечер! Использую для систематизации текста шорткод Tabs. Все работает без проблем. Однако, если шорткод вставлен в самом начале статьи, то он виден в блоке related post - а именно в вводном тексте как: [symple_tabgroup][symple_tab title="Tab 1"] Жилой дом на 15 апартаментов один из самых современных и комфортабельных домов.
    То есть код отображается как текст. Как исправить?

    • admin:

      Добрый день.
      К тексту не применяется do_shortcode, видимо вывод организован как то по другом.
      Если есть доступ до вывода краткого описания, то можно попробовать применить. Также, можно попробовать заполнить вручную поле цитата, в редакторе поста любым другим тестом без шорткодов.

      Как экстренный вариант можно в шаблоне перед выводом вставить

      <?php ob_start();?>
      ....тут код вызова related post
      <?php $str=ob_get_contents(); ob_end_clean(); echo do_shortcode($str);?>

  11. Ян:

    Добрый день. А как вывести текст на английском языке, так, чтобы я мог потом локализовать плагин или шаблон? Например такую конструкцию:
    php _e(‘Price’, ‘simple_shop’)

    • admin:

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

  12. Андрей:

    Вставляю слайдер в запись, а он просто выводит изображение списком, а не слайдером... ((

  13. Aleks:

    Перенес сайт на новый сервер, на новом два "косяка":
    1. В Медиа библиотеке файлы перенесенные со старого сервера отображает без картинки предпросмотра, новые отображает правильно.

    Вопрос №1 как проиндексировать на новом сервер файлы в медеиа библиотеке, что бы отражалась картинка предпросмотра?

    2. Плагин Shortcodes Ultimate на старом сайте генерировал так :
    [su_custom_gallery source="media: 8432,8430,8431" limit="94" link="lightbox" width="110" height="100" title="never"].............[/su_custom_gallery]
    на новом так:
    [su_custom_gallery source="media: 8432,8430,8431" limit="94" link="lightbox" width="110" height="100" title="never"]
    то есть почему то не ставит закрывающий тег:
    .............[/su_custom_gallery]

    Вопрос №2, как сделать что бы ставил?

    За помощь переведу 300р. (по 150р. вопрос).

    • admin:

      Добрый день.
      По п.1 попробуйте использовать плагин Regenerate Thumbnails, думаю что поможет.
      по п.2 - не знаю в чем проблема.

  14. Марина:

    Здравствуйте, мне нужна ваша помощь в этом коде:

    мне нужно скрыть кнопку печати от незарегистрированных пользователей, и я использую этот код:
    Код:

    Когда залогинен - не видишь надпись "Войдите или зарегистрируйтесь", но видишь ссылку на печать, когда не залогинен, видишь надпись "Войдите или зарегистрируйтесь" и видишь ссылку на печать тоже.

    Как мне это исправить? Может быть есть какие-то еще варианты?

    большое спасибо

    P.S. Я использую плагин RestrictedArea чтобы скрыть ссылку в шаблоне и WP-Print для вывод документа на печать

    • admin:

      Добрый день. ответил вам на почту. смотрите плз.
      Самый простой способ определения залогинен или нет это if ( $user_ID ){

      Должно работать.

  15. Аркадий:

    Странно. В админке шорткод работает, а в виджете и в контентной части не работает. jquery подгружается. Фильтр добавил. Что не так??

    • admin:

      Добрый день.
      Уточните плз. как именно шорткод не работает у вас.
      Шорткод срабатывает просто не работает, или просто выводится код шорткода текстом?

  16. Михаил:

    Спасибо большое!!!!
    Долго не мог найти как отобразить шорт в виджетах

Сделать заказ
Онлайн помощь по WordPress