前些天給 WordPress大學(xué) 重新添加了文章收藏功能,還是使用 WP Favorite Posts 插件實(shí)現(xiàn),緊接著發(fā)現(xiàn)一個(gè)問(wèn)題:網(wǎng)站刪除了一些文章,如果用戶(hù)之前收藏過(guò)這些文章,他們的收藏?cái)?shù)據(jù)中仍舊包含這些文章的ID,導(dǎo)致他們的收藏?cái)?shù)量統(tǒng)計(jì)不準(zhǔn)確。

看了插件代碼,發(fā)現(xiàn)它是添加一個(gè)用戶(hù)字段來(lái)存儲(chǔ)用戶(hù)收藏的文章ID的,要解決這個(gè)問(wèn)題,必須將已刪除的文章id從每個(gè)用戶(hù)的這個(gè)字段中刪除。那么,我們就需要驗(yàn)證哪些文章id是無(wú)效的,也就是通過(guò)id判斷這篇文章是否存在。
WordPress 本身沒(méi)有專(zhuān)門(mén)的函數(shù)來(lái)檢測(cè),不過(guò)我們可以通過(guò)一些其他方式檢測(cè),在這里介紹兩種:
通過(guò) get_permalink() 檢測(cè)
get_permalink() 函數(shù)可以返回當(dāng)前文章或指定文章的鏈接,如果沒(méi)有鏈接(即文章不存在)就返回false,我們就是通過(guò)這個(gè)來(lái)實(shí)現(xiàn)的。
if(get_permalink($post_id) === false){
// 文章不存在后執(zhí)行操作
}
代碼中的 $post_id 就是我們要檢測(cè)的文章的id,我們需要在函數(shù)中指定或傳遞即可。
通過(guò) get_post_status() 檢測(cè)
get_post_status() 函數(shù)可用于檢測(cè)當(dāng)前文章或指定文章的狀態(tài),如果檢測(cè)不到狀態(tài)(即文章不存在)就返回false,我們就是通過(guò)這個(gè)來(lái)實(shí)現(xiàn)的。
if(get_post_status($post_id) === false){
// 文章不存在后執(zhí)行操作
}
代碼中的 $post_id 就是我們要檢測(cè)的文章的id,我們需要在函數(shù)中指定或傳遞即可。
當(dāng)然,你也可以使用它來(lái)檢測(cè)文章的狀態(tài)來(lái)實(shí)現(xiàn)一些操作,可以返回的狀態(tài)為:
- ‘publish’ – 公開(kāi)發(fā)布的文章或頁(yè)面
- ‘pending’ – 待審文章
- ‘draft’ – 草稿
- ‘auto-draft’ – 最新自動(dòng)保存的草稿,沒(méi)有文章內(nèi)容
- ‘future’ – 定時(shí)發(fā)布
- ‘private’ – 私密文章
- ‘inherit’ – 修訂版本
- ‘trash’ – 在回收站中的
簡(jiǎn)單的例子:
<?php
if ( get_post_status ( $post_id ) == 'private' ) {
//如果文章?tīng)顟B(tài)是 private
echo '這是一篇私密文章';
} else {
echo '這是一篇公開(kāi)文章';
}
?>
好了,就到這里。如果你要進(jìn)一步了解如何解決文章開(kāi)頭提到的 WP Favorite Posts 的問(wèn)題,請(qǐng)移步:http://www.ydqwiac.cn/wp-favorite-posts.html





被鏡像了哦~ http://www.ydqwiac.cn.dijicat.com/
看看這里:http://www.ilxtx.com/mirrored-website.html ,希望博主能把里面的方法3完善下,方法3在火狐下沒(méi)效果~
多謝反饋,已經(jīng)被多次鏡像,處理駕輕就熟了
有技術(shù),就是方便!
已經(jīng)被修復(fù)完美了哦~
這個(gè)功能,咱用不上,也不知自己目前所使用的主題有木有用戶(hù)中心!