主页中的两个栏,每个栏有一个类别

时间:2013-03-23 作者:benitogonzalezh

我修改了一个wordpress模板,在主页上留下两列,结构如下:

enter image description here

前4个属于一个类别,后4个属于另一个类别

索引代码为:

http://pastebin.com/dMC0saBN

页面是(列已创建,但它们所做的只是重复帖子。它们没有排序或筛选)

2 个回复
SO网友:Hasin Hayder

在第#43行之前,按如下方式调用wp\\u reset\\u query,它应该可以解决重复发布的问题

<?php wp_reset_query(); ?>
参考号:http://codex.wordpress.org/Function_Reference/wp_reset_query

SO网友:montrealist

请尝试在第二个查询之前添加以下内容:

wp_reset_postdata();
它将恢复您的$post global,这将有助于您第二次出现have_poststhe_post 正常工作。

这就是我通常在一个页面上进行多个查询的方式。我正在手动保存和恢复$post 全球,但任何一种方式都应该很好。

<?php if(have_posts()) while(have_posts()): the_post(); ?>

<article class="single-article" id="article-<?= $post->ID ?>">
<!-- output the page content here -->
</article>
<? endif ?>

<?php endwhile; ?>

<!-- start first custom query output -->
<?php
global $post;
$tmp_post = $post;
$args = array(
    \'meta_key\'        => \'featured\',
    \'meta_value\'      => \'1\',
    \'post_status\'     => \'publish\',
    \'post_type\'       => \'post\' );

$featured_posts = get_posts( $args );

if( !empty($featured_posts) ): ?>

<section id="featured-posts">
    <? foreach( $featured_posts as $post ) : setup_postdata($post); ?>
        <a href="<?php the_permalink(); ?>"><h3><?php the_title(); ?></h3></a>
        <!-- and so on -->
    <?php endforeach; ?>
</section>

<?php endif; $post = $tmp_post; /* restore global post variable */ ?>

<!-- start second custom query output -->
<?php
$tmp_post = $post;
$story_args = array(
    \'meta_key\'         => \'featured\',
    \'meta_value\'       => \'1\',
    \'post_status\'      => \'publish\',
    \'post_type\'        => \'story\' );

$story_posts = get_posts( $story_args );

if( !empty($story_posts) ): ?>

<section id="stories">
    <? foreach( $story_posts as $post ) : setup_postdata($post); ?>
        <a href="<?php the_permalink(); ?>"><h3><?php the_title(); ?></h3></a>
        <!-- and so on -->
    <?php endforeach; ?>
</section>

<?php endif; $post = $tmp_post; /* restore global post variable */ ?>

结束