wordpress调用置顶文章sticky_posts的三种方法
有时我们在开发wordpress时需要调用置顶文章sticky_posts,怎么调用呢?几种写法,有用到query_post的,有用到WP_Query,也有用到is_sticky(),下面随ytkah一起来看看吧
第一种调用置顶文章的方法,用到query_post,代码如下
<?php
$query_post = array(
'posts_per_page' => 10,
'post__in' => get_option('sticky_posts'),
'caller_get_posts' => 1
);
query_posts($query_post);
?>
<?php while(have_posts()):the_post(); ?>
<div class="swiper-slide">
<a href="<?php the_permalink(); ?>">
<img src="<?php the_post_thumbnail_url( 'full' ); ?>" alt="<?php the_title(); ?>">
<div class="shadow">
<?php the_title(); ?>
</div>
</a>
</div>
<?php endwhile; ?>
<?php
wp_reset_query();
?>
参数用一个数组的形式放在$query_post中,关键的参数为'post__in' =>get_option('sticky_posts')和'caller_get_posts' => 0。
'post__in' => get_option('sticky_posts')确定了该 LOOP 调用的是置顶文章列表。
'caller_get_posts'的作用是排除非指定性文章,即除了置顶文章之外,不显示其他的文章。
'posts_per_page' => 10,控制文章的数量
不添加的情况下,如果置顶文章条目不足'posts_per_page'规定的值,会用最新文章替补完整。
如果想调用除了置顶文章外的本栏目其余所有文章怎么操作?
<?php
$query_post = array(
'category__in' => array(get_query_var('cat')),//如果是栏目调用,注意这行要加,否则会调用全站所有文章
'posts_per_page' => 5,
'post__not_in' => get_option('sticky_posts'),//排除置顶
'caller_get_posts' => 1
);
query_posts($query_post);
?>
<?php while(have_posts()):the_post(); ?>
<div class="item wow zoomIn">
<div class="img-box">
<img src="<?php the_post_thumbnail_url( 'full' ); ?>" alt="<?php the_title(); ?>">
</div>
<div class="text">
<div class="title">
<h3>
<?php the_title(); ?>
</h3>
</div>
<div class="description">
<p>
<?php the_excerpt(); ?>
</p>
</div>
<div class="more">
<a href="<?php the_permalink(); ?>">Read More</a>
</div>
</div>
</div>
<?php endwhile; ?>
<?php
wp_reset_query();
?>
第二种写法用到WP_Query,和第一种方法有点类似,代码如下
<?php
$args = array(
'posts_per_page' => -1,
'post__in' => get_option( 'sticky_posts' )
);
$sticky_posts = new WP_Query( $args );
while ( $sticky_posts->have_posts() ) : $sticky_posts->the_post();?>
<li>
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; wp_reset_query();?>
第三种方法,用is_sticky()判断
<?php if (have_posts()) : ?>
<p>文章列表如下</p>
<ul>
<?php while (have_posts()) : the_post();
if (is_sticky()):
global $more; // 设置全局变量$more
$more = 1;
?>
<li>
<h2>[置顶]<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" rel="bookmark"><?php the_title(); ?></a><h2/>
<p><?php the_content(); ?></p>
</li>
<?php else:
global $more;
$more = 0;
?>
<li>
<h2><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" rel="bookmark"><?php the_title(); ?></a><h2/>
<p><?php the_content('阅读更多'); ?></p>
</li>
<?php endif; ?>
<?php endwhile; ?>
</ul>
<?php else: ?>
<h2>没有找到更多文章</h2>
<?php endif; ?>
关于置顶文章wordpress有两个常用的函数
is_sticky():判断文章是否是置顶的,是就返回true,不是就返回false
get_option('sticky_posts'): 获取置顶文章ID,返回包含各置顶文章ID的数组
首页展示文章时,如果是置顶文章就全文输出
方法简介:在loop循环时,通过 is_sticky()判断是否是置顶文章
是的话就设置全局变量$more=1;然后调用 the_content();就是全文输出了
否则不是置顶文章的话就设置全局变量 $more=0;然后调用 the_content('更多...');就是截取<--more-->标签后的输出
以上三种方法可以灵活运用,祝大伙开发愉快!
参考资料https://developer.wordpress.org/reference/classes/wp_query/
wordpress调用置顶文章sticky_posts的三种方法的更多相关文章
- WordPress 一键置顶文章(推荐用SM Sticky Clicky Star)
在 WordPress入门 之 发布新文章和管理文章 中,倡萌已经简单提到可以在文章编辑界面或者快速编辑界面设置置顶文章,但是如果你想在后台文章列表中添加一键置顶文章的功能,不妨试试 Quick St ...
- wordpress调用指定分类除外的置顶文章
我们有时需要根据实际需要进行一些设置,比如wordpress调用指定分类除外的置顶文章,如何实现呢?随ytkah一起来看看吧,用如下代码插入到需要调取的位置 <div class="r ...
- YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法
上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...
- (转)JAVA 调用Web Service的三种方法
1.使用HttpClient用到的jar文件:commons-httpclient-3.1.jar方法:预先定义好Soap请求数据,可以借助于XMLSpy Professional软件来做这一步生成. ...
- go 调用windows dll 的三种方法
参考:https://blog.csdn.net/qq_39584315/article/details/81287669 大部分代码参考:https://studygolang.com/articl ...
- python网络编程调用recv函数完整接收数据的三种方法
最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这 ...
- MSSQL·查询T-SQL语句执行时间的三种方法
阅文时长 | 0.23分钟 字数统计 | 420.8字符 主要内容 | 1.引言&背景 2.自定义时间变量求差法 3.MSSQL内置方法 4.MSSQL选项开启时间统计 5.声明与参考资料 『 ...
- 转载:WinForm中播放声音的三种方法
转载:WinForm中播放声音的三种方法 金刚 winForm 播放声音 本文是转载的文章.原文出处:http://blog.csdn.net/jijunwu/article/details/4753 ...
- Javascript定义类(class)的三种方法
将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越 ...
随机推荐
- Excel 如何统计非空非零单元格的个数
使用 Excel 统计非空非零单元格的个数: ——使用函数 :=COUNTIFS($B$2:$B$194440,"<>",$B$2:$B$194440,"&l ...
- in 和 exists的区别
表展示 首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下: user表: order表: in 确定给定的值是否与子查询或列表中的值相匹配.in在查询的时候,首先查询子查询 ...
- storm并行
Storm并行度 wordcount 统计job代码 public class WordCountTopology { private static final String SENTENCE_SPO ...
- TPad需求和迭代
需求和迭代最主要的区别是什么
- C++工程师养成 每日一题(vector使用)
题目: 链接:https://www.nowcoder.com/questionTerminal/6736cc3ffd1444a4a0057dee89be789b?orderByHotValue来源: ...
- Queue介绍
美人如斯! 前言 队列是一种先进先出(FIFO)的数据结构,与生活中的排队类似,即先来先被服务,这样的特点决定了其具有一定的优先级含义,可以被用于任务调度等场景.队列模型如图: 图1.队列模型 jav ...
- C#子线程执行完后,调用主线程的方法
private delegate void CheckVersionNumber_CallBack(string str);//定义一个为委托 用于 检测版本 //检测版本private void m ...
- JQuery入门篇
JQuery入门篇 jQuery选择器 “$”表示JQuery对象 根据ID查找 $(‘#var’)表示将一个id值为var的DOM节点封装成一个jQuery对象,DOM节点必须以“#”开头. 例如: ...
- 用lambda表达式写左联查询的示例
需要完成的查询逻辑:A表内联B表,B表左联C表,A表左联D表,并且 C表的TotalCount>23,D表的ClassHour>8,最后查出A表的Id,代码如下: IQueryable&l ...
- 事件绑定+call apply指向
JS高级 事件—— 浏览器客户端上客户触发的行为都称为事件 所有事件都是天生自带的,不需要我们去绑定,只需要我们去触发,通过obj.事件名=function(){ } 事件名:onmousemove: ...