Multiple loops are not reset

时间:2012-11-09 作者:Tim S.

我可爱的同事们再次设计了一款让我很难在Wordpress中找到它的东西。令人惊讶的是,这是我以前做过多次的事情;在一个页面上有最近的帖子和页面内容。

主页是一个页面。在页面内容上方有三篇最近的帖子。对于帖子,我需要在<!--more--> 标签

这个循环似乎工作得很好。稍后,在模板中,我循环查看实际页面内容。无论我做什么,它总是给我不可靠的结果。

这是我的索引的精简版本。php/页。php模板(它们恰好相同):

<div id="content">
    <?php get_template_part(\'news\'); ?>

    <?php
    $args = array(
        \'hierarchical\'  => false,
        \'sort_column\'   => \'menu_order\'
    );

    $pages = get_pages($args);
    ?>

    <?php while(have_posts()): the_post(); ?>
        <?php $id = get_the_ID(); ?>

        <div id="page-content">
            <!-- lets have a dodgy menu here! -->
            <ul id="navigation">
                <?php foreach($pages as $page): ?>
                    <li<?php echo (($page->ID !== $id) ? \'\': \' class="active"\'); ?>>
                        <a href="<?php echo get_page_link($page->ID); ?>"><?php echo $page->post_title; ?></a>
                    </li>
                <?php endforeach; ?>
            </ul>

            <div class="content-wrapper">
                <div class="subnav-wrapper">
                    <ul id="subnavigation">
                        <li><a href="#">jaarrekeningen</a></li>
                        <li><a href="#">administraties</a></li>
                        <li><a href="#">salarisverwerking</a></li>
                        <li><a href="#">fiscaal advies</a></li>
                        <li><a href="#">overig advies</a></li>
                    </ul>
                </div>

                <div class="content"><?php the_content(); ?></div>

                <div class="clear"></div>
            </div>
        </div>
    <?php endwhile; ?>

    <?php get_template_part(\'social\'); ?>
</div>
如你所见,我包括news 样板这是:

<?php
$args = array(\'numberposts\' => 3);

$posts = get_posts($args);

global $more;
?>

<div id="news">
    <?php foreach($posts as $key => $post): setup_postdata($post); ?>
        <?php if($key > 0): ?><div class="news-item-splitter"></div><?php endif; ?>
        <?php $more = 0; ?>

        <div class="news-item">
            <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

            <?php the_content(\'Lees meer\'); ?>
        </div>
    <?php endforeach; wp_reset_postdata(); ?>

    <div class="clear"></div>
</div>
我做错了什么?

提前谢谢。

2 个回复
最合适的回答,由SO网友:Tim S. 整理而成

永远不要使用变量posts 在Wordpress中用于自定义循环。将变量名称更改为后items 在里面news.php 一切都很顺利。

当我更改变量时postitem, 它再次停止工作。。。

<?php foreach($items as $post): setup_postdata($post); ?>
    <!-- post -->
<?php endforeach; wp_reset_postdata(); ?>

SO网友:Alex Lane

在你新闻的结尾。php,使用wp_reset_query(). 这将还原为该页面的默认查询。

希望这有帮助!

Codex Function Reference for wp_reset_query()

结束

相关推荐

Create pages for authors

我有一个很好的问题。我想在wordpress博客上为每个注册用户创建一个隐藏页面。我已经有了需要放在页面上的大部分代码,其中包含一个简单的短代码。我所需要的只是一些真正制作页面的东西。这是我的一些代码。<?php function added($user_id) { global $wpdb; // Create a page for the user with certain settings // WHAT DO I PUT HERE!?