麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > CMS > Wordpress > 正文

WordPress統(tǒng)計(jì)當(dāng)前日志中所有的附件錯(cuò)誤怎么解決

2024-09-07 00:51:04
字體:
供稿:網(wǎng)友

今天發(fā)現(xiàn)wordpress博客自帶的統(tǒng)計(jì)當(dāng)前日志中所有的附件有問題,并不能正確的統(tǒng)計(jì)出來,后來經(jīng)過反復(fù)調(diào)整最后是可以了,下面我把具體的方法與各位分享.

在這里稍微分析下原理:無論是wordpress什么版本,原理都是一樣的,都是通過這段核心代碼進(jìn)行查詢.

  1. $args = array
  2.     'post_parent' => $post->ID, 
  3.     'post_type' => 'attachment'
  4.     'post_mime_type' => 'image'
  5.     'posts_per_page' => -1, 
  6.     'orderby' => 'menu_order'
  7.     'order' => 'ASC'
  8. ); 
  9. $attachments = get_posts( $args ); 

不過呢,wordpress在3.6以后呢,為大家封裝了一個(gè)方法get_attached_media,至此以后查詢就變得類似像下面一樣簡單了.

  1. // 獲取所有類型附件 
  2. $attachments = get_attached_media( ''$post->ID ); 
  3. // 獲取所有的音頻附件: 
  4. $attachments = get_attached_media( 'audio'$post->ID ); 

這樣就OK了嗎?大家可以做一個(gè)這樣的測試:先在一篇日志中插入5張圖,保存,然后從這幾張圖中,隨便刪除2張,修改,保存(這個(gè)時(shí)候日志中只有3張圖了),最后用這個(gè)函數(shù)再來看,輸出還是5個(gè)post數(shù)據(jù).

為什么會(huì)這樣?

這段代碼是通過查詢wp_posts表中所有post_parents字段為post_ID,并且post_type為attachment的數(shù)據(jù),這樣就會(huì)造成兩個(gè)問題.

只統(tǒng)計(jì)插入的圖片,不統(tǒng)計(jì)刪除的圖片,post_parents的字段類型為BIGINT,這樣只能統(tǒng)計(jì)一次,比如你在日志A插入了圖片I,之后在日志B中再插入圖片I,這樣就沒辦法同時(shí)統(tǒng)計(jì)了.這樣看來wordpress統(tǒng)計(jì)當(dāng)前日志附件相當(dāng)不準(zhǔn).

我是如何修正的,我思考了這么幾個(gè)問題?用什么來記錄當(dāng)前日志的附件?在什么地方進(jìn)行統(tǒng)計(jì),該如何取出,關(guān)于記錄日志的附件,我選擇了postmeta這個(gè)表來記錄,增加一個(gè)meta_key,至于在什么地方統(tǒng)計(jì),我選擇了鉤子save_post,整體代碼如下:

  1. add_action('save_post''save_post_my_func', 10 , 2); 
  2.  
  3. function save_post_my_func() { 
  4.     global $wpdb
  5.  
  6.     $content = $post->post_content; 
  7.     if (!stristr($content'/wp-content/uploads/')) 
  8.     { 
  9.         // 如果說當(dāng)前日志中沒有任何附件鏈接,我將這個(gè)字段更新為空 
  10.         update_post_meta($post_id'_wp_post_attach_total_'''); 
  11.         return ; 
  12.     } 
  13.  
  14.     $data = array(); 
  15.     if (preg_match_all('/(href|src)=[^>]+/wp-content/uploads/(sites/d+/)?([^"'>s]+)["'>s]/is'$content$match)) 
  16.     { 
  17.         // 統(tǒng)計(jì)所有帶有附件鏈接的img還有l(wèi)ink 
  18.         $files = array_flip(array_flip($match[3])); 
  19.         $sql = sprintf("SELECT `post_id` FROM `%s` WHERE `meta_key`='_wp_attached_file' AND (`meta_value`='%s');"
  20.                         $wpdb->postmeta, implode("' OR `meta_value`='"$files)); 
  21.  
  22.         (FALSE != ($row = $wpdb->get_col($sql))) && $data = $row
  23.     } 
  24.  
  25.     // 統(tǒng)計(jì)日志中的相冊 
  26.     if (preg_match_all('/?)([^"']]*)1s*]/is', $content$gallery)) 
  27.     { 
  28.         $where = array(); 
  29.         $gallery = explode(',', implode(','$gallery[2])); 
  30.         foreach ($gallery as $val
  31.         { 
  32.             $where[] = '`post_id`='.trim($val); 
  33.         } 
  34.  
  35.         $sql = sprintf("SELECT `post_id` FROM `%s` WHERE `meta_key`='_wp_attached_file' AND (%s);"$wpdb->postmeta, implode(' OR '$where)); 
  36.         (FALSE != ($row = $wpdb->get_col($sql))) && $data = array_merge($data$gallery); 
  37.     } 
  38.  
  39.     // 統(tǒng)計(jì)當(dāng)前日志中的縮略圖 
  40.     if (FALSE != ($thumb_id = get_post_meta($post_id'_thumbnail_id'))) 
  41.     { 
  42.         $data[] = $thumb_id[0]; 
  43.     } 
  44.  
  45.     // 為了后續(xù)擴(kuò)展,以及向其他應(yīng)用開放擴(kuò)展,這里我創(chuàng)建了一個(gè)過濾鉤子 
  46.     $data = apply_filters('wp_post_attach_total'$data$post_id); 
  47.     if (!emptyempty($data)) 
  48.     { 
  49.         $data = array_flip(array_flip($data)); 
  50.         update_post_meta($post_id'_wp_post_attach_total_', implode(','$data)); 
  51.     } 

大家可以通過下面的代碼獲取當(dāng)前日志附件,代碼如下

get_post_meta($post_id, '_wp_post_attach_total_');

為什么要做這樣的研究,初衷原本是要統(tǒng)計(jì)wordpress有多少附件是上傳后卻用不到的,卻發(fā)現(xiàn)wordpress提供的功能卻有問題。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 精品成人在线 | 一级做人爱c黑人影片 | 色域tv| 毛片电影网址 | 国产亚洲精品视频中文字幕 | 激情小说激情图片激情电影 | 亚洲一区二区三区四区精品 | 在线91视频 | va免费视频 | 97久久曰曰久久久 | 亚洲综合中文 | 欧美性生交xxxxx免费观看 | 一级国产精品一级国产精品片 | 亚洲视频网 | 欧美日韩一区三区 | 成人影片在线免费观看 | 久久久久久久一区二区三区 | 久久久久久久久91 | 久久99精品久久久久久秒播放器 | 久久精品国产一区二区电影 | 91看片在线观看视频 | 国产在线地址 | 国产成人自拍视频在线观看 | 黄色高清视频网站 | 亚洲日本高清 | 久久精品视频免费观看 | 精品一区二区免费视频视频 | 日本在线不卡一区二区 | 国产精品1区,2区,3区 | 中文日韩欧美 | 色天天综合网 | 草草视频免费 | 亚洲国产精久久久久久久 | 黄色大片在线免费看 | 国产精品91久久久 | 看片一区二区三区 | 国产电影精品久久 | 国产一区二区精彩视频 | 久草在线资源福利站 | 国产精品久久久久久久久久大牛 | 久久久久亚洲美女啪啪 |