外贸独立站的底层设计密码WordPress 成品站模板
当前位置:首页>WordPress建站>WordPress开发>WordPress 检查一篇文章是否存在

WordPress 检查一篇文章是否存在

前些天给 WordPress大学 重新添加了文章收藏功能,还是使用 WP Favorite Posts 插件实现,紧接着发现一个问题:网站删除了一些文章,如果用户之前收藏过这些文章,他们的收藏数据中仍旧包含这些文章的ID,导致他们的收藏数量统计不准确。

2016-09-09_095551

看了插件代码,发现它是添加一个用户字段来存储用户收藏的文章ID的,要解决这个问题,必须将已删除的文章id从每个用户的这个字段中删除。那么,我们就需要验证哪些文章id是无效的,也就是通过id判断这篇文章是否存在。

WordPress 本身没有专门的函数来检测,不过我们可以通过一些其他方式检测,在这里介绍两种:

通过 get_permalink() 检测

get_permalink() 函数可以返回当前文章或指定文章的链接,如果没有链接(即文章不存在)就返回false,我们就是通过这个来实现的。

if(get_permalink($post_id) === false){
    // 文章不存在后执行操作
}

代码中的 $post_id 就是我们要检测的文章的id,我们需要在函数中指定或传递即可。

通过 get_post_status() 检测

get_post_status() 函数可用于检测当前文章或指定文章的状态,如果检测不到状态(即文章不存在)就返回false,我们就是通过这个来实现的。

if(get_post_status($post_id) === false){
    // 文章不存在后执行操作
}

代码中的 $post_id 就是我们要检测的文章的id,我们需要在函数中指定或传递即可。

当然,你也可以使用它来检测文章的状态来实现一些操作,可以返回的状态为:

  • ‘publish’ – 公开发布的文章或页面
  • ‘pending’ – 待审文章
  • ‘draft’ – 草稿
  • ‘auto-draft’ – 最新自动保存的草稿,没有文章内容
  • ‘future’ – 定时发布
  • ‘private’ – 私密文章
  • ‘inherit’ – 修订版本
  • ‘trash’ – 在回收站中的

简单的例子:

<?php
	if ( get_post_status ( $post_id ) == 'private' ) {
        //如果文章状态是 private
		echo '这是一篇私密文章';
	} else {
		echo '这是一篇公开文章';
	}
?>

好了,就到这里。如果你要进一步了解如何解决文章开头提到的 WP Favorite Posts 的问题,请移步:https://www.wpdaxue.com/wp-favorite-posts.html

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
WordPress开发

使用 WP_Error 类进行 WordPress 错误处理(二)

2016-6-27 9:10:39

WordPress开发

WordPress无刷新分类筛选以及分页的文章列表

2017-1-10 8:33:27

5 条回复 A文章作者 M管理员
  1. 龙笑天下

    被镜像了哦~ http://www.wpdaxue.com.dijicat.com/
    看看这里:http://www.ilxtx.com/mirrored-website.html ,希望博主能把里面的方法3完善下,方法3在火狐下没效果~

    • 倡萌

      多谢反馈,已经被多次镜像,处理驾轻就熟了

  2. 动感单车网

    这个功能,咱用不上,也不知自己目前所使用的主题有木有用户中心!

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索