Привет всем.
Работаю с Вордпресом 2 года, но править php код жизнь заставила только сейчас. По этому языку программирования у меня достаточно скудные познания. Но дело надо сделать а именно написать шорткод для вывода сайдбара в посте. Я не буду никого просить это делать за меня. Я уже это сделал, но из-за недостатка моих знаний, он работает не так.
Вот собственно сама функция:
function insert_middle_sidebar_fc() {
?><div class="insert_middle_sidebar"><?php
if ( !function_exists('woo_sidebar')|| !woo_sidebar('middle_sidebar') );?></div> <?php
}
add_shortcode("insert_middle_sidebar", "insert_middle_sidebar_fc");
Проблема в том, что сайдбар выводится не там, где вставил шорткод, а все время перед текстом поста. Посоветуйте пожалуйста что надо изменить. Я php обязательно выучу. Просто это надо уже.
Спасибо.
Разумеется, перед. Потроха Вашего "сайдбара" выводятся методом print|echo в тот момент, когда парсер контента натыкается на шорткод, то есть, готового к выводу контента поста еще нет, а "сайдбар" уже пошел в выходной поток.
Что делать? Либо не извращаться с сайдбаром (функций что ли мало, чтобы еще виджеты заталкивать внутрь поста), либо перехватывать поток http://php.net/manual/en/ref.outcontrol.php и возвращать парсеру перехваченный мотлох.
А что за функции, если можно (то есть функции вывода выджетов в пост)? И можно ли их поместить в шортокд для удобства, так чтобы они отображались где этот шорткод поставил.
А что за виджеты?
В шорткод можно поместить всё что угодно, лишь бы это что-то возвращало значение, а не выводило его.
То есть для каждого виджета нужно писать шортко?
Просто идеальным вариантом было бы формирование списка виджетов визуально в админке сайта (лучше методом перетаскивания, как в сайдбар), присвоение этому списку шорткода, или параметра шорткода, и дальнейший вывод этого списка в посте в любом месте через этот шорткод.
Можно ли такое реализовать, или игра не стоит свеч?
Можно много чего. Но Вам придется учить php (одну полезную ссылку я уже дал) и внутренности движка. Ибо я сильно сомневаюсь, что кому-то захочется задаром сушить мозг столь экстравагантной задачей.
Понял. Спасибо.