Модератор
Юрій
(@yube)
Создал шорткод.
Возможно, Ваш код обработчика шорткода не возвращает значение, а сразу выводит. Должен возвращать то, чем заменяется [....]
.
Юрий (@yube), возможно так и есть, ведь «тело» шорткода — это код html. Может этот код обернуть в что-то наподобии return '<div>' . do_shortcode ($content) . '</div>';
Но контект это и есть код html — я его специально сократил до функции шорткода чтобы весь не писать в html-виджете. Т.е. контента в текстовом виджете не будет.
файлы кода: http://transfiles.ru/vzptw
Модератор
Юрій
(@yube)
ведь «тело» шорткода — это код html
Да, и его в конце работы обработчика шорткода надо вернуть (return $html
), а не выводить (echo $html;
). Выведет то, что выводит контент, в котором расположен шорткод.
Покажите код обработчика.
И не надо пинговать (писать ник с @) без особой нужды. Спасибо за понимание.
Юрий, а как к вам обращаться в теме?
скриншот: заголовок
файлы кода: 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>
.
собственно решил так: return <<<EOT...
но это вроде не совсем правильный путь…
Может лучше использовать что-то вроде:
$html = '<html>';
$html .= '<body>';
$html .= '<h1>Hello</h1>';
$html .= '</body>';
$html .= '</html>';
Спасибо Юрию
Модератор
Юрій
(@yube)
но это вроде не совсем правильный путь…
Почему? heredoc ничем не хуже других кавычек.
потому что на англоязычном форуме где посмотрел решение пользователь написал
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.
спасибо, работает и ладно, в коде у меня не 1000 строк