按帖子类型分组显示最新5个帖子的正确方式?

时间:2018-09-27 作者:Michael Rogers

我需要显示每种帖子类型的最新5篇帖子,类似于:

Latest BMW Posts:

    后标题BMW 1
  • 后标题BMW 2
    • Latest Audi Posts:

      • 后标题奥迪1
      • 后标题奥迪2
        • 等等。

          看来https://codex.wordpress.org/Function_Reference/wp_get_recent_posts 确实如此。类似于:

          <h2>Latest BMW Posts:</h2>
          <ul>
          <?php
              $args = array(
              \'numberposts\' => 5,
              \'post_type\' => \'bmw\'
          );
              $recent_posts = wp_get_recent_posts( $args );
              foreach( $recent_posts as $recent ){
                  echo \'<li><a href="\' . get_permalink($recent["ID"]) . \'">\' .   $recent["post_title"].\'</a> </li> \';
              }
              wp_reset_query();
          ?>
          </ul>
          
          <h2>Latest Audi Posts:</h2>
          <ul>
          <?php
              $args = array(
              \'numberposts\' => 5,
              \'post_type\' => \'audi\'
          );
              $recent_posts = wp_get_recent_posts( $args );
              foreach( $recent_posts as $recent ){
                  echo \'<li><a href="\' . get_permalink($recent["ID"]) . \'">\' .   $recent["post_title"].\'</a> </li> \';
              }
              wp_reset_query();
          ?>
          </ul>
          
          The problem is: 当你有10种或更多的类型时,它可能会变得势不可挡。

          代码是否可以与一组post类型一起使用,并循环它们以避免对每种类型重复相同的代码

1 个回复
最合适的回答,由SO网友:Hovo 整理而成

<?php $post_types = array(
    \'bmw\' => \'BMW\',  // post type to use in query => post type to show in <h2>
    \'audi\' => \'Audi\'

); 

foreach( $post_types as $post_type => $post_type_name ):
?>

    <h2>Latest <?php echo $post_type_name; ?> Posts:</h2>
    <ul>
    <?php
        $args = array(
        \'numberposts\' => 5,
        \'post_type\' => $post_type
    );
        $recent_posts = wp_get_recent_posts( $args );
        foreach( $recent_posts as $recent ){
            echo \'<li><a href="\' . get_permalink($recent["ID"]) . \'">\' .   $recent["post_title"].\'</a> </li> \';
        }
        wp_reset_query();
    ?>
    </ul>
<?php endforeach; ?>
我觉得最好用wp_get_recent_posts 这比一个查询要好,因为可能会触发过滤器,因为查询缓存,因为Db可以缩放为每个帖子类型的分区,因为没有好的单个查询可以更快地获取所有信息。

结束

相关推荐

load post data into mysql

我有几百行产品数据,这些数据将作为帖子显示在wordpress网站上。我确信有一种方法可以将所有这些数据直接加载到数据库中,然后让管理员和;前端UI将这些作为新帖子填充。但据我所知,帖子的各个方面都被填充/存储在不同的表中。我应该将这些数据加载到哪些表中,以避免从管理UI手动创建每个表?