A saída de shortcode aparece antes de postar corpo [duplicado]

3

Como posso inserir o código do meu plug-in via shortcode dentro do post body na posição exata?

O problema é que o mecanismo wp insere o código do plug-in ANTES postar corpo o tempo todo. Pode ser consertado?

Por exemplo: eu tenho alguns [shortcode option="value"] , que gera algum texto com imagem dentro do contêiner div. Quando eu coloco dentro do post DEPOIS do texto, o wp envia este código:

<div> here is my plugin code </div> <p> here is the text of the post </p>

... e assim fica no topo do post.

Onde está minha culpa?

    
por drake2300 10.12.2012 / 10:50

1 resposta

9

Já tive este problema antes: códigos de acesso não devem exibir qualquer conteúdo (usando print ou echo ), em vez return do conteúdo a ser enviado.

Se for muito difícil converter todas as suas instruções de saída, ou você precisar usar uma função que sempre exibirá a saída, você pode usar o buffer de saída . Um buffer "capturará" qualquer conteúdo echo 'd ou print ' d e permitirá que você o grave em uma variável.

function my_awesome_shortcode( $atts, $content = null ) {
    // begin output buffering
    ob_start();

    // output some text
    echo 'foo' . "bar\n";
    $greeting = 'Hello';
    printf( '%s, %s!', $greeting, 'World' );

    // end output buffering, grab the buffer contents, and empty the buffer
    return ob_get_clean();
}

add_shortcode( 'awesome', 'my_awesome_shortcode' );

Saiba mais sobre Controle de buffer de saída e os diferentes Funções de controle de saída que você pode usar.

    
por shea 10.12.2012 / 11:06