您的位置:首页 » Wordpress » 正文

使用ignore_sticky_posts代替caller_get_posts

在使用query_posts输出首页热门文章排序,会出现最新的置顶文章,需要排除,但打开wordpress调试模式后,发现WP给出了如下提示:

Notice: 自 3.1 版本起,已不建议给 WP_Query 传入一个参数!“caller_get_posts”不再被建议使用。请改用“ignore_sticky_posts”。 in D:\xampp\XXX\wp-includes\functions.php on line 2923

ignore_sticky_posts 意为是否显示置顶最新文章在query_posts控制的列表上,默认值为0,不排除置顶文章。请注意:ignore/exclude sticky posts being included at the beginning of posts returned, but the sticky post will still be returned in the natural order of that list of posts returned(在返回文章列表时,仍以自然顺序将曾经置顶的文章安插在列表中,也就是说你排除的置顶文章只适用于某文章列表上).

用法举例

只显示(返回)第一篇置顶文章:

  1. $sticky = get_option( ‘sticky_posts’ );  
  2. $query = new WP_Query( ‘p=’ . $sticky[0] );  

返回第一篇置顶文章,否则显示最新的以发布的文章:

  1. $args = array(  
  2.     ‘posts_per_page’ => 1,  
  3.     ‘post__in’  => get_option( ‘sticky_posts’ ),  
  4.     ‘ignore_sticky_posts’ => 1  
  5. );  
  6. $query = new WP_Query( $args );  

排除查询中所有的置顶文章:

  1. $query = new WP_Query( array( ‘post__not_in’ => get_option( ‘sticky_posts’ ) ) );  

返回某一分类下所有文章,不在文章列表上显示置顶文章。但其置顶文章仍显示在其他自然排序中,比如日期排序归档:

  1. $query = new WP_Query( array( ‘ignore_sticky_posts’ => 1, ‘posts_per_page’ => 3, ‘cat’ => 6 );  

更多关于ignore_sticky_posts的介绍与例子请参见WP官方:WP_Query函数

  • 有8,307次围观
除特别声明外, 本站所有内容皆为原创,转载时请务必以超链接形式标明文章出处和作者信息
本文最后更新于2013年7月15日,已超过 1 年没有更新,部分内容或许已经不适用,请知悉,谢谢!

分享给我的好友看看:

 





快捷键:Ctrl+Enter