显示类别中的最新帖子

时间:2013-08-19 03:36:23

标签: php wordpress

虽然wordpress堆栈可以解决这个问题,但我认为我的问题更多的是基本的PHP逻辑而不是wordpress问题。

我的问题是我的代码在某个类别中显示每个帖子,而不仅仅是最新帖子。我的代码必须在此类别的展示帖子中说出类似foreach帖子的内容,但我想说的是,仅显示最新帖子

$post_type = 'post';

$taxonomies = get_object_taxonomies( (object) array( 'post_type' => $post_type ) );

foreach( $taxonomies as $taxonomy ) : 

    $terms = get_terms( $taxonomy );

    foreach( $terms as $term ) : 

      $args = array('taxonomy' => $taxonomy, 'term' => $term->slug, 'posts_per_page' => 1, 'orderby' => 'modified','category' => $str );

        $posts = new WP_Query( $args );

        if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post();
              if(has_term('double portrait','twin')) {
                 get_post( &$post, $output = OBJECT, $filter = 'raw' )
            }
        endwhile; endif;

    endforeach;

endforeach;
wp_reset_postdata();

这是我目前的代码。帮助赞赏。

3 个答案:

答案 0 :(得分:0)

一种简单的方法,没有太多变化,你可以在第一次迭代后打破,即:

if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post(); if(has_term('double portrait','twin')) { get_post( &$post, $output = OBJECT, $filter = 'raw' ); break; } endwhile; endif;

您也可以考虑使用此功能:<?php wp_get_recent_posts( $args, $output ) ?>

此处有更多信息:http://codex.wordpress.org/Function_Reference/wp_get_recent_posts

答案 1 :(得分:0)

 $args = array(
'numberposts' => 10,
'offset' => 0,
'category' => 0,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish',
'suppress_filters' => true );

$recent_posts = wp_get_recent_posts( $args, $output = ARRAY_A );

这将为您提供10篇近期帖子。您可以使用$ args数组来寻找适合您的不同结果。

答案 2 :(得分:0)

$args = array(
        'posts_per_page' => 1,
        'orderby' => 'modified',
        'category_name' => $str,
        'post_status' => 'publish',
        'tax_query' => array(
          array(
            'taxonomy' => 'twin',
            'field' => 'slug',
            'terms' => array('double portrait','landscape')
          )
        )
      );
      $myPosts = get_posts($args);
      foreach ( $myPosts as $post ) :
      setup_postdata( $post ); 
      echo get_template_part( 'twin-feature' ); ?>

    <?php endforeach; wp_reset_postdata(); ?>