前些天给博客重新添加了文章收藏功能,还是使用 WP Favorite Posts 插件实现,紧接着发现一个问题:网站删除了一些文章,如果用户之前收藏过这些文章,他们的收藏数据中仍旧包含这些文章的ID,导致他们的收藏数量统计不准确。d B [ s
看了插件代码,发现它是添加一个用户C * ; s 0 J W ^字段来存储用户收藏的文章ID的,要解g = m c _ T ` z决这个问题,必须将已删除的文章id从每个用户的这W B )个字段中删除。那么,我们就需0 } L 8 t k ( t要验证哪些文章id是无效的,: S A \ (也就是通过id判断这篇文章是否存在。
WordPress 本身没有专门的函数来检测,不过我们可以通p 8 z | V + 7过一些其他方式检测,在这里介绍两种:
通过 get_permalink() 检测
get_permalink() 函数可以返回当前文章或指k * q P B t定文章的链接,如果没有链接(即文章不存在)就返回false,我们就是通过这个来实现的。
- if(get_pC & y mermalink($post_id)===false){
- //文章不存在后执行[ * ] J ? V C U操作
- }
代码中的 $post_id 就是我们要检测的文章的id,我们需要g } I ) z在函数中指定或传递即可。
通过 get_post_status() 检测
get_post_statu= D P % = 0s() 函数可用于检测当前文章或指定文章的状态,如果检测不到状态(即文章I \ k x 3不存在)就返回false,我们就是通过这个来实现的。
- if(get_post_status($post_id)===false){
- //文章不存在后执行操作
- }
代码中的 $post_id 就是我们要检测的文章的id,我们需要在函数中指定或传递即可。
当然,你也可以使用它来检测文章的状态来实现一些操作$ 1 n O t,可以返回的状态为:
- ‘publish’ – 公开发布的文章或页面
- ‘pending’ – 待审文章
- ‘draft’ – 草稿
- ‘auto-draft’ – 最新自动保存D n H的草稿,没有文章内容
- ‘future’ – 定时发布
- ‘private’ – 私密文章
- ‘inherit’ – 修订版本
- ‘trash’ – 在回收站中的u J M #
简单的例子:
- <?php
- if(get_post_status($posD 2 w ct_id)==‘private‘c s L k ~ h){
- //如果文章状态是priva4 O I X ^ Kte
- echo‘这是一篇私密文章’;
- }e# J z N # Ulse{
- ech* 3 K 7o‘这是一篇公开文章’4 S Q ^ ; g K V V;
- }
- ?>f o V
好了,就到这里。
特别声明:本站所收录作品、热点评论等信息来源互联网,目的只是为了系统归纳学习和传递资讯所有作品版权归原创作者所有,与本站立场无关,图文源自网络,如有侵权,请联系删除!请联系我们邮箱:908164873@qq.com/电话:187-8421-3206,我们将做删除处理!