前些天重新添加了文章收藏功能,紧接着发现一个问题:网站删除了一些文章,如果用户之前收藏过这些文章,他们的收藏数据中仍旧包含这些文章的 ID,导致他们的收藏数量统计不准确。由于 WordPress 本身并没有提供相关的函数可以检测,我们可以通过 get_permalink() 函数判断文章链接是否存在,和通过 get_post_status() 判断文章状态,来间接判断某篇文章是否存在。
收藏原理是添加一个用户字段来存储用户收藏的文章 ID 的,要解决这个问题,必须将已删除的文章 id 从每个用户的这个字段中删除。那么,我们就需要验证哪些文章 id 是无效的,也就是通过 id 判断这篇文章是否存在。
WordPress 本身没有专门的函数来检测,不过我们可以通过一些其他方式检测,在这里介绍两种:
get_permalink() 函数判断
get_permalink()函数是用于获取当前文章或者通过指定文章 ID 来获取文章链接的函数,如果没有获取到链接,函数就会返回 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 '这是一篇公开文章';
- }
- ?>
最后需要注意的是,以上提供的代码片段中$post_id 变量是指的文章或页面 ID,在 WordPress 文章主循环中可以使用 get_the_ID()函数获取,所以在需要判断或者检测指定文章状态时需要指定$post_id 变量或者传值才可以完整的使用。
文章連結:https://www.wuyanshuo.cn/851.html
更新時間:2022年6月1日
1、本站所有資源均不添加推廣檔案或浮水印,壓縮包內若有廣告檔案和浮水印請勿輕易相信。
2、本站資源均為兩層壓縮,第一層7z(尾碼若為wys,請自行修改為7z)有解壓密碼; 第二層zip或cbz,無解壓密碼,可直接使用漫畫類軟件程式查看; 詳情可參攷解壓教程。
3、本站大部分內容均收集於網絡! 若內容侵犯到您的權益,請發送郵件至:admin#wysacg.top我們將第一時間處理! 資源所需價格並非資源售賣價格,是收集、整理、編輯詳情以及本站運營的適當補貼,並且本站不提供任何免費技術支援。 所有資源僅限於參攷和學習,版權歸原作者所有!