8

我知道这可能是退货问题。所以我把内容分开了,一个在一个被调用的函数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 回答