8

おそらく返品の問題であることは承知しています。そのため、コンテンツを分割しました。1 つは呼び出された関数で、もう 1 つはthelistそれを返す実際の関数です。コードは質問に従います。

実際のショートコードは機能しますが、コンテンツが残りのコンテンツの前に上部に表示されます。返品すれば治ると思っていたのnow_include_postですが治りません。誰でも助けることができますか?

function thelist() {
if (have_posts()) : while (have_posts()) : the_post();
?>  
        <div id="post-<?php the_ID(); ?>"  <?php post_class('thumb'); ?>>
            <a href="<?php the_permalink() ?>" class="thumb-link">
            <?php
    if (!post_password_required())  {
                    if (has_post_thumbnail()) {
                        the_post_thumbnail();
                    }
                } else {
                    ?>
                    <img src="<?php bloginfo('template_url') ?>/img/locked.png"  />
        <?php } ?>
            </a>
            <h2>
                <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a>
            </h2>
        </div>
<?php /* end post */ ?>
<?php
    endwhile;
    endif;
    wp_reset_query();
    }
    ?>
    <?php

function now_include_post($atts) {
$thepostid = intval($atts[id]);
query_posts("p=$thepostid");
$output .= thelist();
return $output;
}
4

1 に答える 1

29

PHP をエスケープするときに、その場でテキストを出力するのではなく、すべてのテキストを返したいとします。

thelist() 関数の開始時に、出力バッファを次のように開始します。

ob_start();

次に、最後にこのバッファを閉じ、その内容を次のように返します

return ob_get_clean();

これは、すぐにエコーするのではなく、コンテンツを返します。これは、WP ショートコードの場合に実行したいことです。

出力バッファリング関数に関する PHP 情報

于 2012-05-02T02:40:41.537 に答える