Не работают шорткоды в сайдбаре, как исправить? :A

Привет друг!

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

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

Инструкция "Как заставить работать шорткоды в сайдбаре":

1. Зайди в админку своего блога и перейди в раздел "Внешний вид" >> "Редактор".

2. Справа на открывшейся странице найди файл Функции темы (Theme Functions) или functions.php и кликни по нему, чтобы он открылся в редакторе.

3. Найди место между тегами <?php и ?> и не внутри функций, которые уже могут быть прописаны в этом файле. Лучше не париться и выбрать место в самом конце шаблона, перед последней строчкой ?>.

4. Вставить в это место код:

add_filter('widget_text', 'do_shortcode');

Если ты делаешь свои плагины или плагин, то рекомендую тебе вставить этот код в свой плагин, чтобы он всегда работал в сайдбарах любого шаблона.

5. После внесения изменений нажать кнопку "Обновить файл", чтобы сохранить их.

Вот и все. Теперь шорткоды в сайдбаре должны работать 🙂

 

[ Прочитайте комменты ниже или напишите свой... ]

Ищете хостинг для своего сайта? Могу порекомендовать свой (нажмите здесь)

22 комментария к “Не работают шорткоды в сайдбаре, как исправить? :A”

  1. Александр 10.08.2013 в 16:54 #

    Спасибо!! Очень помогло, то что надо!

  2. Yaroslav 05.01.2014 в 20:38 #

    такая проблема, сделал в index.php вставку страницы, что бы была поверх записей На главной странице.

    <?php 
    	$post = get_post($post_id = 1); // Записываем все данные записи 1 в объект $post
    	echo ''.$post->post_content.''; // Выводим контент записи;
    ?>
    

    И почему, то не работают шорткоды на этой странице, везде нормально, а на которой вывел на главную страницу нет и всё! Не подскажете что да как?

    • Богдан 06.01.2014 в 07:08 #

      Здравствуйте, Ярослав. Подскажу конечно 🙂

      Замените свой вариант кода на этот:

      <?php
       $custom_post = get_post( 1 );
       echo do_shortcode( $custom_post->post_content );
      ?>
      
      • Yaroslav 06.01.2014 в 10:12 #

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

        post_content); ?>

        • Богдан 06.01.2014 в 12:42 #

          Извиняюсь, Ярослав. В предыдущем комментарии я опечатку допустил. Забыл переименовать во второй строке переменную. А ваш код вырезался при вставке, если будет возможность вставить, оберните код в [_php] ... [/_php] (без нижних подчеркиваний _)

          • Богдан 06.01.2014 в 20:34 #

            Спасибо вам за попытки.

            Чтобы вставить код, вам нужно перед кодом написать шорткод [_php], а после кода написать такой же закрывающий шорткод [_/php]. Но только без символа "_", который я написал в этих шорткодах, чтобы они не сработали напрасно.

  3. Yaroslav 06.01.2014 в 12:44 #

    А можно ещё один вопрос 🙂 всё по той же теме. Страница сейчас отображается поверх записей, шорткоды работают хорошо, но сайдбар теперь начал прыгать, при изменения текста страницы в index.php

    • Богдан 06.01.2014 в 20:38 #

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

  4. Yaroslav 06.01.2014 в 22:03 #
    <div id="home_page"> 
                <?php $home_id = тут ваш id номер страницы;
                $home_page = get_page( $home_id );
                ?>
    <?php echo apply_filters('the_content',$home_page->post_content); ?>
        </div>  
    
    • Богдан 07.01.2014 в 13:29 #

      Спасибо вам за ваш вариант решения вопроса, это даже более верное решение, нежели то, которое я приводил.

  5. Yaroslav 07.01.2014 в 11:33 #

    Насчёт sidebar, я уже с ним разобрался, прикрепил к верху на главной странице, параметром absolute и заработало, спасибо большое Богдан.

  6. Настя 28.02.2014 в 18:37 #

    аааа! Я в печали((
    Предыстория:
    Установила супер тему, все круто, НО на главной стр. (там есть после слайдера 3 блока, для рекламы статей стр и т.д.) вот именно там не работают шорткоды, отображается сам код, а не то, что нужно.

    Залезла в funksion.php добавила код, вывел ошибку:

    Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in A:\home\localhost\www\proba\wp-content\themes\customizr\functions.php on line 244

    Вернула все обратно, а он все равно продолжает выводить ошибку. Что ж делать то теперь?( Помогиите пжстааа

    • Настя 28.02.2014 в 18:53 #

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

      • Богдан 08.03.2014 в 09:43 #

        Здравствуйте, Настя.

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

  7. Валерий 24.08.2014 в 09:23 #

    Здравствуйте! Вставил предложенный вами код в предложенное вами место. Но, к сожалению, в сайдбаре по прежнему отражается надпись шорткода, а сам шорткод не распознаётся. Может есть ещё какие-нибудь варианты?
    Спасибо.

  8. Валерий 24.08.2014 в 09:36 #

    Прошу прощение, Богдан, свою ошибку нашёл, исправил, всё работает, Спасибо.

  9. Владимир 03.09.2014 в 11:09 #

    Здравствуйте! У меня схожая проблема, но шорткоды не работают в результатах поиска. Подскажите как решить проблему. Спасибо!

    • Богдан 25.09.2014 в 11:41 #

      Добрый день, Владимир.

      Попробуйте вставить следующий код аналогично в файл functions.php вашей темы (Внешний вид - Редактор):

      add_filter( 'the_excerpt', 'shortcode_unautop');
      add_filter( 'the_excerpt', 'do_shortcode');
      
  10. Павел 23.01.2015 в 13:15 #

    Я правильно понял, после вставки в functions.php указанного вами кода можно шорткод вставлять просто в виджет "Текст"? А то сделал так, а в сайдбаре по прежнему отражается надпись шорткода. Подскажите, что не так сделал? Спасибо

    • Богдан 28.01.2015 в 11:15 #

      Павел, вообще вы все верно поняли. А куда именно в functions.php вы вставили данный код?

  11. Михаил 05.06.2015 в 16:16 #

    Спасибо автору!!! то что нужно!! все заработало!!

  12. Владмир 19.09.2017 в 13:12 #

    Добрый день. Столкнулся с проблемой, шорткод отображается, но самое странное что на страницах второго уровня он не срабатывает. Сама суть шорткода это кнопка, при нажатии которой выводится всплывающее окно Popup Maker. На страницах первого уровня работает, а вот на втором не срабатывает. Может кто сталкивался?