文章调用是指在页面主循环之外的地方按要求调用指定数量的文章,例如在侧边栏或文章下方随着展示文章。Domai CMS可以通过两个常用的标签来进行文章调用,get_posts函数或DM_Query类,本文重点介绍如果使用它们获取文章列表。
使用get_posts方法
get_posts接收一个数组参数,返回文章对象数组,所有可接受的参数如下:
'numberposts' => 5, //调用的文章数量
'number' => 5, //调用的文章数量,number的优先级更高
'category' => 0, //调用的栏目ID
'category__in' => array(), //包含哪些栏目
'post_type' => 'post', //调用的post类型,默认为文章,支持post, page, topic
'post_status' => 'publish', //调用的post状态
'orderby' => 'post_date', //列表排序项
'order' => 'DESC', //列表排序规则
'include' => array(), //要包含的文章ID
'exclude' => array(), //排除的文章ID
'meta_key' => '', //包含的meta键名
'meta_value' =>'', //包含的meta键值
1.获取栏目id为2的文章,显示6条,默认时间排序
<?php $posts = get_posts(array('category'=>2, 'number'=>6)); foreach($posts as $post){ ?> <div class="item"> <a class="figure" href="<?php echo $post->get_permalink();?>"><img src="<?php echo $post->post_thumbnail;?>" width="400" height="300" alt="<?php echo $post->post_subtitle;?>" loading="lazy"/></a> <div class="content"> <h3 class="caption-ns"><a href="<?php echo $post->get_permalink();?>"><?php echo $post->post_subtitle;?></a></h3> <p class="describe text-row-6"><?php echo dm_substr($post->post_excerpt, 0, 710)?></p> <a class="more" role="button" href="<?php echo $post->get_permalink();?>">Learn More</a> </div> </div> <?php } ?>
2.获取多个栏目ID,如1,2,3;显示6条,默认时间排序
$posts = get_posts(array('category__in'=>array(1,2,3),'number'=>6));
3.自定义排列顺序,自定义字段post_order排序因子,根据数字大小排序
$posts = get_posts(array('category'=>9, 'number'=>6, 'data_key'=>'order', 'orderby'=>'post_order'));
4.显示设置为推荐的文章,自定义字段post_recommend,设为推荐的显示,推荐值为1,默认时间排序
$posts = get_posts(array('category__in'=>array(2,3,4,5,6,7), 'data_key'=>'recommend', 'data_value'=>'1', 'number'=>6));
5.根据浏览量大小排序
$posts = get_posts(array('category__in'=>array(1,2,3), 'meta_key'=>'views', 'orderby'=>'meta_value_num', 'number'=>6));
6.获取栏目id为1的文章,显示6条随机排序的文章
<?php $posts = get_posts(array('number'=>6,'category'=>1,'orderby'=rand)); foreach($posts as $post){ sprintf('<li><a href="%s" title="%s">%s</a></li>', $post->get_permalink(), $post->title, $post->subtitle); } ?
上述函数的参数也可以写为'number=6&category=1&orderby=rand'这样的字符串。
使用DM_Query方法
DM_Query是系统查询类,用来查询文章,并把文章绑定到全局对象上,以便于更好的调用,用法为:
<?php $posts = new DM_Query($args); while($posts->have_posts()){ $posts->the_post(); //列表展示代码 } dm_reset_postdata(); ?>
和get_posts不同的是,DM_Query会把查询到的数据绑定到全局对象上,这意味着可以在列表展示代码里调用所有文章调用标签。
DM_Query接受的参数$args,为数组,常见参数如下:
cat, 栏目ID
category_name, 栏目别名
category__in, 多个栏目的栏目ID,栏目名或栏目slug
tag, 标签别名
tag_id, 标签id
p, 文章id
name, 文章slug
title, 文章标题
page_id, 页面id
pagename, 页面slug
topic_id, 专题id
topic_name, 专题slug
post__in, 一个包含文章ID的数组,在这些ID中查找文章
post__not_in, 一个包含ID的数组,排序这些ID的的文章
post_type, 文章类型 post, page, topic,默认为post
post_status, 文章状态,publish, pending,默认为publish
posts_per_page, 每页调用多少文章
has_thumbnail, 调用有缩略图的文章
nopagination, 不分页
paged, 显示第几页
offset, 偏移数量
s, 搜索文章
order,排序规则
orderby, 排序项目
no_found_rows, 设置为true时,可以帮助提高查询速度。
你觉得文章内容怎么样
8 人参与,0 条评论