WordPress中获取最新文章的代码剖析

发布于 2018-08-28  403 次阅读


        <?php query_posts('showposts=6&cat=-10'); ?>
        <?php while (have_posts()) : the_post();?>


      <h3 class="am-alert am-yellow"><span class="am-badge am-badge-danger am-radius">HOT</span> <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'liftoff' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark">
        <?php the_title(); ?>
        </a></h3>
      <?php endwhile;?>
<?php query_posts('showposts=6&cat=-10'); ?>

这一行控制输出的HOT文章数为6篇,并且筛选掉分类id为10的文章

have_posts函数被调用时实际上是调用全局变量wpquery>haveposts()arraywpquery−>haveposts()成员函数,来简单检查一个全局数组(array)变量posts的一个循环计数器,以确认是否还有post,如果有返回true(1),如果没有返回false(0)。

the_post()解析:

the_post()函数则调用wpquery>thepost()wpquery−>thepost()成员函数前移循环计数器,并且创建一个全局变量post(不是posts)postposts),把当前的post的所有信息都填进这个post变量中,以备接下来使用。

简单的使用可以通过函数来直接执行,如the_content()直接显式post的内容,the_title()显式帖子的标题,the_time()显示帖子的时间等WORDPRESS的Template Tags。

高级应用或要定制应用则可以直接调用$post变量的成员。

query_posts()函数说明

query_posts()函数通过大量的参数可以设置什么样的文章,内容出现在wordpress主循环中。如下面所举得例子:

仅在博客主页上显示一篇文章(通过设置>阅读进行设置)
显示某一特定时间段内发表的所有文章
在主页显示近期发表文章
更改文章排列顺序
仅显示某一分类目录中的文章
排除一个或多个分类

重要提示:
query_posts函数仅用于修改主页循环(Loop)。如果你希望在主循环外另外生成循环,应该新建独立的WP_Query对象,用这些对象生成循环。在主循环外的循环上使用query_posts会导致主循环运行偏差,并可能在页面上显示出你不希望看到的内容。query_posts函数会改写并取代页面的主查询。为谨慎起见,请不要将query_posts用作其它用途。
query_posts()函数用法

在主循环开始前,对你的某个模板文件的query_posts()安排一个调用,wp_query对象会利用参数生成新的SQL查询。当你开始调用时,WordPress主循环会忽略通过URL接收到的其它参数(如页面编号或分类),而根据query_posts()函数的查询结果进行循环输出。


像烟花也是过一生,像樱花也是一生,只要亮过和盛开不就好了么?