Не работают шорткоды 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. Ярослав:

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

    • admin:

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

  2. Сергей:

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

    • admin:

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

  3. Виталий:

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

    • admin:

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

  4. Сергей:

    Использю дочернюю тему 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()); в ответе будет пусто 🙂

  5. Антон:

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

    • admin:

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

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

  6. Amir Gumerov:

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

  7. Максат:

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

    • admin:

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

  8. Елена:

    Добрый вечер! Использую для систематизации текста шорткод 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);?>

  9. Ян:

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

    • admin:

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

  10. Андрей:

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

  11. 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 - не знаю в чем проблема.

  12. Марина:

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

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

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

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

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

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

    • admin:

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

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

  13. Аркадий:

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

    • admin:

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

  14. Михаил:

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

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