在主页中显示自定义类别循环

时间:2013-03-30 06:52:18

标签: wordpress wordpress-theming

事情是,在我的主题的主页,我想在不同的Div中显示不同类别的帖子。每个DIV将包含一个类别的3个帖子。我需要一个可以从特定类别中选择最后3个帖子的循环。找不到合适的ans。

为了更容易解释,这里是内容部分的演示图片,

http://i.imgur.com/5QSzAIS.png

如果有人帮我提供代码,那将是一个很大的帮助!

2 个答案:

答案 0 :(得分:2)

<?php query_posts('cat=10&posts_per_page=3'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
   <?php the_content(); ?>
<?php endwhile; endif; ?>

这应该让你开始。您需要使用此代码两次。在显示cat=10的位置,您应该输入您的类别ID(当您从管理面板中点击类别时,可以检查此内容,浏览器会显示类似http://yourwebsite.com/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=4&post_type=post的内容)

表示tag_ID是您的类别的ID。

答案 1 :(得分:0)

我目前在网站的页面上使用不同的方法,我允许我在一个页面中运行多个循环并为每个循环指定类别。这个方法我个人更喜欢,因为它对我来说更直接,我可以使用slug而不是ID来定义类别。

不是使用have_posts()等,而是在定义数组后使用WP_Query(),然后wp_reset_postdata()结束循环。好处是你可以通过这种方式继续运行循环。

我还使用get_post_meta在我的帖子中加载自定义字段中的数据,但这种方法无需使用。

<div class="audioGrid">

    <?php 
    $args = array( 'post_type' => 'post',                        
                   'category_name' => 'audio',                    
                   'posts_per_page' => 3,
                   'order' => 'DESC' );

    $query1 = new WP_Query($args);        

    while ( $query1->have_posts() ) {
        $query1->the_post();

    ?>                              
        <div id="<?php echo( basename(get_permalink()) ); ?>" class="grid_item">
            <?php the_post_thumbnail( 'audio-thumb' ); ?>
            <h3><?php the_title(); ?></h3>
            <p><?php echo get_post_meta($post->ID, 'post_description', true); ?></p>
            <a target="blank" href="<?php echo get_post_meta($post->ID, 'audio_link', true); ?>"></a>
        </div>

    <?php the_content(); ?>

    <?php } ?>

</div>  <?php // end Audio Grid ?>

    <?php wp_reset_postdata(); ?>

<div class="videoGrid">

    <?php 
    $args2 = array( 'post_type' => 'post',                        
                   'category_name' => 'video',                    
                   'posts_per_page' => 3,
                   'order' => 'DESC' );

    $query2 = new WP_Query($args2);        

    while ( $query2->have_posts() ) {
        $query2->the_post();

    ?>                              
        <div id="<?php echo( basename(get_permalink()) ); ?>" class="grid_item">
            <?php the_post_thumbnail( 'video-thumb' ); ?>
            <h3><?php the_title(); ?></h3>
            <p><?php echo get_post_meta($post->ID, 'post_description', true); ?></p>
            <a target="blank" href="<?php echo get_post_meta($post->ID, 'video_link', true); ?>"></a>
        </div>

    <?php the_content(); ?>

    <?php } ?>

</div>  <?php // end Video Grid ?>

    <?php wp_reset_postdata(); ?>

我正在做的另一件很酷的事情就是使用自定义字段来定义事物的顺序,并使用meta_keymeta_value_num来获取该数字,并强制执行我想要的顺序,这个网站并不复杂,这种方式定义订单很方便。我只是使用前导零来简化:001,002,003等

<?php 
    $args2 = array( 'post_type' => 'post',                        
                    'category_name' => 'video',                    
                    'posts_per_page' => 3,
                    'meta_key' => 'video_order',
                    'orderby' => 'meta_value_num', 
                    'order' => 'ASC' );

    $query2 = new WP_Query($args2);        

    while ( $query2->have_posts() ) {
        $query2->the_post();

?>

无论如何,希望如果您需要使用多个循环来从不同类别中提取帖子,这会有所帮助。