0

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

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

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

如果有人帮助我编写代码,这将是一个很大的帮助!

4

2 回答 2

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。

于 2013-03-30T07:12:13.697 回答
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();

?>

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

于 2016-06-09T08:37:53.110 回答