2

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

我的问题是我的代码显示了一个类别中的每个帖子,而不仅仅是最新的帖子。我的代码必须在这个类别中显示类似 foreach post 的内容,但我想说的是,只显示最新的帖子

$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();

这是我目前拥有的代码。帮助表示赞赏。

4

3 回答 3

0

一种简单的方法,无需太多更改,您可以在第一次迭代后中断 while,即:

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

于 2013-08-19T03:52:31.390 回答
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 数组来获得适合您的不同结果。

于 2013-08-19T04:14:25.550 回答
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(); ?>
于 2013-08-19T10:51:30.687 回答