• Решено jurvrn

    (@jurvrn)


    Создал зону виджетов. Создал шорткод. Шорткод вставляю в текстовый виджет. Заголовок виджета почему-то отображается внизу «тела» виджета. (Шорткод — это код html календарь по структуре — таблица, стили, скрипт). Текст виджета попадает какбы в заголовок. Может нужно как-то правильно позиционирование указать… Если нужно — напишу все коды (в другой моей теме обсуждался вопрос кода этого плагина).

    • Тема изменена 6 лет назад пользователем jurvrn.

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Модератор Юрій

    (@yube)

    Создал шорткод.

    Возможно, Ваш код обработчика шорткода не возвращает значение, а сразу выводит. Должен возвращать то, чем заменяется [....].

    Автор jurvrn

    (@jurvrn)

    Юрий (@yube), возможно так и есть, ведь «тело» шорткода — это код html. Может этот код обернуть в что-то наподобии return '<div>' . do_shortcode ($content) . '</div>';
    Но контект это и есть код html — я его специально сократил до функции шорткода чтобы весь не писать в html-виджете. Т.е. контента в текстовом виджете не будет.
    файлы кода: http://transfiles.ru/vzptw

    Модератор Юрій

    (@yube)

    ведь «тело» шорткода — это код html

    Да, и его в конце работы обработчика шорткода надо вернуть (return $html), а не выводить (echo $html;). Выведет то, что выводит контент, в котором расположен шорткод.

    Покажите код обработчика.

    И не надо пинговать (писать ник с @) без особой нужды. Спасибо за понимание.

    Автор jurvrn

    (@jurvrn)

    Юрий, а как к вам обращаться в теме?
    скриншот: заголовок
    файлы кода: http://transfiles.ru/vzptw

    Модератор Юрій

    (@yube)

    Юрий, а как к вам обращаться в теме?

    Вот так и обращайтесь 🙂 А пинг орет в телефоне и пугает 🙂

    файлы кода

    Ну да, как я и думал: сразу вывод. Так нельзя.

    Можно как-то так:

    
    add_shortcode ( 'kalend', 'my_shortcode_kalend' );
    function my_shortcode_kalend () {
    return <<< HTML
    
    <style type="text/css">
    .... тут мотлох ...
    </script>
    
    HTML;
    }
    

    Либо использовать ob_* Матчасть http://php.net/manual/ru/ref.outcontrol.php

    Модератор Юрій

    (@yube)

    А вообще я не совсем понял, зачем тут использовать шорткод, если весь этот мотлох прекрасно можно разместить в виджете HTML-код, идеально для того предназначенном. А еще лучше бы вынести стили туда же, где и остальные стили, чтобы их не было внутри <body>.

    Автор jurvrn

    (@jurvrn)

    собственно решил так: return <<<EOT... но это вроде не совсем правильный путь…
    Может лучше использовать что-то вроде:

    $html = '<html>';
           $html .= '<body>';
           $html .= '<h1>Hello</h1>';
           $html .= '</body>';
           $html .= '</html>';

    Спасибо Юрию

    Модератор Юрій

    (@yube)

    но это вроде не совсем правильный путь…

    Почему? heredoc ничем не хуже других кавычек.

    Автор jurvrn

    (@jurvrn)

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

    In PHP you have something called heredoc which lets you write large amounts of text from within PHP, but without the need to constantly escape things.

    Модератор Юрій

    (@yube)

    Ну и где там написано, что это «не совсем правильный путь»?

    И мне кажется, что «without the need to constantly escape things» скорее относится к nowdoc, чем к heredoc.

    Автор jurvrn

    (@jurvrn)

    спасибо, работает и ладно, в коде у меня не 1000 строк

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