Поддержка Проблемы и решения расположение шорткода в контенте

  • Решено moonkir

    (@moonkir)


    Есть шорт код

    function number_search() {
      ?>
    Text in shortcode
    <?php
    }
    add_shortcode( 'number_search', 'number_search' );

    Добавляем его в запись после фразы:

    Text in content
    [number_search]

    Выводит:

    Text in shortcode
    Text in content

    Почему содержимое шорткода добавляется ДО контента и не учитывается его место расположения.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Автор moonkir

    (@moonkir)

    function number_search_code() {
      ?>
    Text in shortcode
    <?php
    }
    
    function number_search(){
         ob_start();
         number_search_code();
         $output_string=ob_get_contents();
         ob_end_clean();
    
         return $output_string;
    }
    
    add_shortcode( 'number_search', 'number_search' );

    Какой то костыль, но работает

    Автор moonkir

    (@moonkir)

    Теперь текст шорткода не форматируется как контент, что за гадство…

    Модератор Yuri

    (@yube)

    Почему содержимое шорткода добавляется ДО контента

    Потому что обработчик должен возвращать текст, а не выводить его. Типа так:

    function number_search() {
       return 'Text in shortcode';
    }

    Автор moonkir

    (@moonkir)

    Спасибо Юрий

    Автор moonkir

    (@moonkir)

    А если используется не только текст?
    Текст я привел в качестве примера, у меня там и div и код php

    Модератор Yuri

    (@yube)

    у меня там и div и код php

    div, p и прочий html-ный мотлох — он, по большому счету, тоже текст. В MIME-типе прямо так и написано: text/html.

    А php надо сначала выполнить, а полученный в результате выполнения текст вернуть.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «расположение шорткода в контенте» закрыта для новых ответов.