У меня есть следующий текст на странице. Поскольку вы можете видеть, что мой shortcode находится справа внизу, но каким-то образом, когда код запускается, вывод моего короткого кода вставлен в верхней части страницы, а не после предыдущего содержимого.
<img class="alignnone" title="title_enquires" src="http://localhost/barcelona/wp-content/uploads/2011/08/title_enquires.jpg" alt="" width="589" height="77" /> <img class="alignnone" title="contact_map" src="http://localhost/barcelona/wp-content/uploads/2011/08/contact_map.jpg" alt="" width="555" height="222" /> [barcelona_address]
Вот моя короткая регистрация кода внутри файла function.php:
<?php add_shortcode( 'barcelona_address', 'barcelona_shortcode_handler' ); function barcelona_address_func() { print "<p>sdsdsds</p>"; } function barcelona_shortcode_handler( $atts, $content=null, $code="" ) { if (function_exists($code . "_func")) { call_user_func($code . "_func", $atts); } } ?>
И результат:
<p>sdsdsds</p> <img class="alignnone" title="title_enquires" src="http://localhost/barcelona/wp-content/uploads/2011/08/title_enquires.jpg" alt="" width="589" height="77" /> <img class="alignnone" title="contact_map" src="http://localhost/barcelona/wp-content/uploads/2011/08/contact_map.jpg" alt="" width="555" height="222" />
Предполагается, что ваш обработчик короткого кода вернет вывод для отображения вместо короткого кода, а не выводит что-либо сам.
Вы можете использовать в качестве альтернативы:
ob_start(); ...your code... return ob_get_clean();
и используйте без возврата html как строку.