几个调用最新文章代码

2011年08月12日23:31:01 14 已收录 4,026
摘要

This function is used to get a list of all the pages that are defined in the blog. Essentially get_pages gives you an array of the pages, and that array is not tree-like. See the template tag, wp_list_pages(), for the output of page titles in a tree-like fashion. Note that, although similar to get_posts, several of the parameter names and values differ.

说明:

This is a simple function for creating multiple loops. It retrieves a list of latest posts or posts matching criteria.

Note that although the parameters are similar to get_pages, several have different names or take slightly different values (see get_pages).

用法

  1. <?php $posts_array = get_posts( $args ); ?>   

默认用法:

  1. <?php $args = array(   
  2.     'numberposts'     => 5,   
  3.     'offset'          => 0,   
  4.     'category'        => ,   
  5.     'orderby'         => 'post_date',   
  6.     'order'           => 'DESC',   
  7.     'include'         => ,   
  8.     'exclude'         => ,   
  9.     'meta_key'        => ,   
  10.     'meta_value'      => ,   
  11.     'post_type'       => 'post',   
  12.     'post_mime_type'  => ,   
  13.     'post_parent'     => ,   
  14.     'post_status'     => 'publish' ); ?>   

 

参数:

get_posts() makes use of the WP_Query class to fetch posts. See the parameters section of the WP_Query documentation for a list of parameters that this function accepts.

Note: get_posts uses 'suppress_filters' => true as default, while query_posts() applies filters by default, this can be confusing when using query-modifying plugins, like WPML.

返回值

(array) 
List of post objects. Check get_post() return values.

例子

Posts list with offset

If you have your blog configured to show just one post on the front page, but also want to list links to the previous five posts in category ID 1, you can use this:

  1. <ul>   
  2. <?php   
  3. global $post;   
  4. $args = array( 'numberposts' => 5, 'offset'=> 1, 'category' => 1 );   
  5. $myposts = get_posts( $args );   
  6. foreach$myposts as $post ) :  setup_postdata($post); ?>   
  7.     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>   
  8. <?php endforeach; ?>   
  9. </ul>  

 

Note: With use of the offset, the above query should be used only on a category that has more than one post in it, otherwise there'll be no output.

Reset after Postlists with offset

If you need after the loop, the post you had before joining the foreach, you can use this:

  1. <ul>   
  2. <?php   
  3. global $post;   
  4. $tmp_post = $post;   
  5. $args = array( 'numberposts' => 5, 'offset'=> 1, 'category' => 1 );   
  6. $myposts = get_posts( $args );   
  7. foreach$myposts as $post ) : setup_postdata($post); ?>   
  8.     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>   
  9. <?php endforeach; ?>   
  10. <?php $post = $tmp_post; ?>   
  11. </ul>  

 

Access all post data

Some post-related data is not available to get_posts by default, such as post content through the_content(), or the numeric ID. This is resolved by calling an internal function setup_postdata(), with the $post array as its argument:

  1. <?php   
  2. $args = array( 'numberposts' => 3 );   
  3. $lastposts = get_posts( $args );   
  4. foreach($lastposts as $post) : setup_postdata($post); ?>   
  5.     <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>   
  6.     <?php the_content(); ?>   
  7. <?php endforeach; ?>  

 

To access a post's ID or content without calling setup_postdata(), or in fact any post-specific data (data retained in the posts table), you can use $post->COLUMN, where COLUMN is the table column name for the data. So $post->ID holds the ID, $post->post_content the content, and so on. To display or print this data on your page use the PHP echo command, like so:

  1. <?php echo $post->ID; ?>  

 

Latest posts ordered by title To show the last ten posts sorted alphabetically in ascending order, the following will display their post date, title and excerpt

  1. <?php   
  2. $args = array( 'numberposts' => 10, 'order'=> 'ASC', 'orderby' => 'title' );   
  3. $postslist = get_posts( $args );   
  4. foreach ($postslist as $post) :  setup_postdata($post); ?>    
  5.     <div>   
  6.         <?php the_date(); ?>   
  7.         <br />   
  8.         <?php the_title(); ?>      
  9.         <?php the_excerpt(); ?>   
  10.     </div>   
  11. <?php endforeach; ?>  

Random posts

Display a list of 5 posts selected randomly by using the MySQL RAND() function for the orderby parameter value:

  1. <ul>   
  2. <?php   
  3. $args = array( 'numberposts' => 5, 'orderby' => 'rand' );   
  4. $rand_posts = get_posts( $args );   
  5. foreach$rand_posts as $post ) : ?>   
  6.     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>   
  7. <?php endforeach; ?>   
  8. </ul>  

 

Show all attachments

Do this outside any Loops in your template.

  1. <?php   
  2. $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => null );    
  3. $attachments = get_posts( $args );   
  4. if ($attachments) {   
  5.     foreach ( $attachments as $post ) {   
  6.         setup_postdata($post);   
  7.         the_title();   
  8.         the_attachment_link($post->ID, false);   
  9.         the_excerpt();   
  10.     }   
  11. }   
  12. ?> 

Show attachments for the current post

Do this inside The Loop (where $post->ID is available).

  1. <?php   
  2. $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID );    
  3. $attachments = get_posts($args);   
  4. if ($attachments) {   
  5.     foreach ( $attachments as $attachment ) {   
  6.         echo apply_filters( 'the_title' , $attachment->post_title );   
  7.         the_attachment_link( $attachment->ID , false );   
  8.     }   
  9. }   
  10. ?>  

 

Get a post by its slug

Allows you to get a post ID by post slug. The caller_get_posts argument excludes sticky posts from this custom query.

  1. <?php   
  2. $the_slug = 'my_slag';   
  3. $args=array(   
  4.   'name' => $the_slug,   
  5.   'post_type' => 'post',   
  6.   'post_status' => 'publish',   
  7.   'showposts' => 1,   
  8.   'caller_get_posts'=> 1   
  9. );   
  10. $my_posts = get_posts($args);   
  11. if$my_posts ) {   
  12. echo 'ID on the first post found '.$my_posts[0]->ID;   
  13. }   
  14. ?>  

 

代码源自WordPress官方Codex

weinxin
我的微信
分享交流WordPress经验与技巧,关注前端设计与网站制作。仅用于功能演示。
Begin主题购买
Begin主题购买

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:14   其中:访客  12   博主  2

    • 观影楼阁 1

      我是沙发呀,最新文章代码网上一大推。

      • 孤苏陌澜 3

        夜深来看看,有意外收获,先学习学习!!

        • win7en乐园 5

          欧耶,鸟哥写新文章了!!

          • 包头中耳炎医院 2

            我看不懂代码啊

            • 康辉旅行社官网 1

              很实用

              • Louis Han 6

                这是copy paste吗?

                • 英语四级成绩单 1

                  能比较好的 ,做到优化的效果

                  • 陨落de芳菲 5

                    知更鸟,请教一个问题:
                    如何获取当前文章的分类?
                    尝试过the_category(); get_category_link();wp_list_categories();等等
                    效果都很不如意

                    只需要输出锚链接,不要文字部分
                    我想在文章页获取当前文章的分类链接,用下面的形式:

                    [a href=当前文章所属分类的链接] {img src=一张“阅读更多”的图片} [/a]

                    会不会是自己已经思维局限了呢?希望知更鸟指点一下:)

                      • 知更鸟 Admin

                        @陨落de芳菲 实现方法很简单给默认分类函数加参数

                        <?php the_category(‘&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;’, ‘  ‘, ‘  ‘) ?>  
                        并给这句函数加上标签并定义属性
                        可以参考我主题的文章编辑按钮

                          • 陨落de芳菲 5

                            @知更鸟 请问能不能给出一个现成的例子呢?
                            我昨晚尝试了一下你说的思路,完全不会 – – ||

                            最后我使用foreach,将get_the_category()设成get_category_link()参数实现
                            放于文章循环内,只是这代码看起来实在是太那啥了 = v =

                            压缩包在这里,贴贴贴贴贴:
                            www.libertystudio.net/catlink.zip

                        • 小乖乖 1

                          我想问下 你这里的代码 dp-highlighter 里面的 ul的样式 是后台添加文章加的样式 还是编辑器改变的呀?麻烦告诉下 谢谢了

                          • 米米鸡 3

                            鸟哥、第一次使用HotNews、非常喜欢,也有很多不清楚不懂得问题、请问tab的菜单如何才能把本月排行换成最新文章、把年度排行换成本月排行呢??

                              • 知更鸟 Admin

                                @米米鸡 打开sidebar.php
                                大概第5行的
                                tab_h.php
                                改为:
                                tab.php

                                  • 米米鸡 3

                                    @知更鸟 谢谢、我看到了一篇帖子、可以在logo旁边加微博图标、可否把公告栏右边的腾讯微博和新浪微博删掉呢?在哪删呢?