web-dev-qa-db-ja.com

短いコードが他のコンテンツよりも先に実行されるのはなぜですか?

私はページに次のテキストがあります。私のショートコードは一番下にありますが、どういうわけかコードが実行されるとわかるように、私のショートコードの出力は、その前の内容に従うのではなく、ページの上部に挿入されます。

<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" />
3
Roman

人気のある需要によって:

解決策は単にprintreturnに置き換えることです。ショートコードは、値を表示したりエコーしたりするのではなく、常に値を返します。

10
Bainternet