Por que meu código curto é executado antes de outro conteúdo?

3

Eu tenho o seguinte texto em uma página. Como você pode ver, meu shortcode está bem na parte inferior, mas de alguma forma, quando o código é executado, a saída do meu shortcode é inserida na parte superior da página, em vez de seguir o conteúdo anterior.

<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]

aqui está o meu registro de código curto dentro do arquivo 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);
   }
}
?>

e o resultado é:

<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" />
    
por Roman 15.08.2011 / 07:02

1 resposta

10

Por demanda popular:

A solução é simplesmente substituir print to return . Os códigos de acesso devem sempre retornar o valor em vez de imprimir ou ecoar.

    
por Bainternet 15.08.2011 / 14:03