页面上的循环导致快捷码失败

时间:2011-07-09 作者:tim

我有一个典型的WordPress页面(page.php):

<?php the_post(); ?>
<div id="rightcol">
 <div <?php post_class(); ?>>
 <?php the_content(); ?>
</div>
所有工程良好;在页面内容中有一些短代码,[库]

因此,我在页面中添加了一个简单的循环,以显示给定类别中的随机帖子:

<?php query_posts(\'category_name=interesting_sites&posts_per_page=3&orderby=rand\'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 <div <?php post_class(); ?>>
  <h1><?php the_title(); ?></h1>
  <?php the_content(); ?>
 </div>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
然后,页面内容中的短代码将失败!为什么会发生这种情况?有什么想法吗?

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

你真的不应该用query_posts() 对于该页面的主循环以外的任何内容,请使用WP_Query()get_posts(), 尝试以下操作:

$my_query = new WP_Query(
    array(
        \'category_name\' => \'interesting_sites\',
        \'posts_per_page\' => 3,
        \'orderby\' => \'rand\'
    )
);
while ($my_query->have_posts()){
    $my_query->the_post();
    ?>
    <div <?php post_class(); ?>>
        <h1><?php the_title(); ?></h1>
        <?php the_content(); ?>
    </div>
    <?php
}
wp_reset_postdata();

结束

相关推荐

流视频播放器不能使用DO_SHORTCODE()?

我下载了一个名为Stream Video Player, 它有一个短代码。如果我把这个短代码放在内容编辑器中,它会很好地工作,并显示视频。但是,如果在我创建的模板中,我通过do_shortcode() 函数,它不起作用,它只显示文本[stream bla bla]. 谁能帮帮我,告诉我为什么会这样?