亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > CMS > Wordpress > 正文

WordPress統計當前日志中所有的附件錯誤怎么解決

2024-09-07 00:51:04
字體:
來源:轉載
供稿:網友

今天發現wordpress博客自帶的統計當前日志中所有的附件有問題,并不能正確的統計出來,后來經過反復調整最后是可以了,下面我把具體的方法與各位分享.

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

  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以后呢,為大家封裝了一個方法get_attached_media,至此以后查詢就變得類似像下面一樣簡單了.

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

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

為什么會這樣?

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

只統計插入的圖片,不統計刪除的圖片,post_parents的字段類型為BIGINT,這樣只能統計一次,比如你在日志A插入了圖片I,之后在日志B中再插入圖片I,這樣就沒辦法同時統計了.這樣看來wordpress統計當前日志附件相當不準.

我是如何修正的,我思考了這么幾個問題?用什么來記錄當前日志的附件?在什么地方進行統計,該如何取出,關于記錄日志的附件,我選擇了postmeta這個表來記錄,增加一個meta_key,至于在什么地方統計,我選擇了鉤子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.         // 如果說當前日志中沒有任何附件鏈接,我將這個字段更新為空 
  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.         // 統計所有帶有附件鏈接的img還有link 
  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.     // 統計日志中的相冊 
  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.     // 統計當前日志中的縮略圖 
  40.     if (FALSE != ($thumb_id = get_post_meta($post_id'_thumbnail_id'))) 
  41.     { 
  42.         $data[] = $thumb_id[0]; 
  43.     } 
  44.  
  45.     // 為了后續擴展,以及向其他應用開放擴展,這里我創建了一個過濾鉤子 
  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.     } 

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

get_post_meta($post_id, '_wp_post_attach_total_');

為什么要做這樣的研究,初衷原本是要統計wordpress有多少附件是上傳后卻用不到的,卻發現wordpress提供的功能卻有問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲精品久久| 欧美性一区二区三区| 国产美女91呻吟求| 国产视频一区在线| 国产精品丝袜久久久久久不卡| 国产成+人+综合+亚洲欧美丁香花| 久久成人亚洲精品| 精品久久久久久久久久久久久久| 欧美专区国产专区| 亚洲精品久久久久久下一站| 亚洲欧洲国产一区| 久久久久这里只有精品| 欧美亚洲成人网| 性欧美暴力猛交69hd| 在线精品国产成人综合| www.日韩av.com| 中文字幕9999| 国产视频精品va久久久久久| 黄色91在线观看| 亚洲性线免费观看视频成熟| 欧洲日韩成人av| 国外成人在线直播| 欧美午夜性色大片在线观看| 日韩av黄色在线观看| 国产欧美在线看| 久久久国产视频| 国产日韩欧美视频| 久久艹在线视频| 亚洲社区在线观看| 亚洲a在线播放| 久久久久免费视频| 亚洲免费人成在线视频观看| 欧美日韩色婷婷| 中文字幕日韩欧美| 一区二区三区天堂av| 欧美日韩亚洲精品内裤| 亚洲尤物视频网| 91亚洲精华国产精华| 欧美美女18p| 欧美激情喷水视频| 操日韩av在线电影| 国产精品影片在线观看| 91国语精品自产拍在线观看性色| 欧美日韩国产综合新一区| 欧美激情成人在线视频| 欧美极品少妇xxxxx| 成人女保姆的销魂服务| 亚洲欧美日韩第一区| 在线看片第一页欧美| 国产日本欧美一区| 久久久久久亚洲精品中文字幕| 人人澡人人澡人人看欧美| 国产精品影院在线观看| 欧美区在线播放| 成人性生交大片免费看视频直播| 日韩欧美成人网| 欧美午夜久久久| 国产欧美久久久久久| 欧美成人精品激情在线观看| 欧美激情一区二区三区在线视频观看| 成人美女av在线直播| 在线观看成人黄色| 成人黄色大片在线免费观看| 久久成人亚洲精品| 高清一区二区三区四区五区| 中文字幕成人精品久久不卡| 911国产网站尤物在线观看| 成人午夜激情免费视频| 国产在线观看一区二区三区| 久久九九精品99国产精品| 亚洲电影成人av99爱色| 中文字幕九色91在线| 日韩欧美亚洲一二三区| 亚洲成人动漫在线播放| 91精品国产乱码久久久久久久久| 久久久久中文字幕| 永久555www成人免费| 日韩欧美一区二区三区| 久久久视频精品| 久久久久久国产三级电影| 国产精品日韩欧美大师| 日韩国产精品亚洲а∨天堂免| 亚洲高清免费观看高清完整版| 国产欧美一区二区三区久久| 亚洲欧美日韩第一区| 97久久精品人人澡人人爽缅北| 成人国产在线视频| 久久久久久久999精品视频| 亚洲美女中文字幕| 日韩欧美亚洲综合| 亚洲国产精品久久久久秋霞不卡| 在线观看国产精品日韩av| 欧美激情一级二级| 成人444kkkk在线观看| 欧美日韩精品国产| 欧洲成人在线观看| 97视频在线观看视频免费视频| 久久久免费观看| 亚洲第一在线视频| 91中文精品字幕在线视频| 亚洲色图第一页| 国内精品一区二区三区四区| 日韩在线视频中文字幕| 丁香五六月婷婷久久激情| 美女啪啪无遮挡免费久久网站| 欧美小视频在线| 欧美老女人性视频| 亚洲男人av电影| 亚洲大胆人体av| 日韩av不卡在线| 久久久久久久999| 色香阁99久久精品久久久| 国产精品88a∨| 久久久久久久国产精品视频| 日韩电影中文字幕在线| 国产精品久久久久久久av电影| 91av在线播放视频| 欧美另类老肥妇| 亚洲伊人第一页| 国产精品福利在线| 欧美疯狂xxxx大交乱88av| 美女精品久久久| 一区二区亚洲精品国产| 色偷偷综合社区| 久久精品国产96久久久香蕉| 欧美大秀在线观看| 一本色道久久88综合亚洲精品ⅰ| 欧美亚洲国产视频小说| 亚洲免费av电影| 成人高h视频在线| 狠狠躁天天躁日日躁欧美| 久久久精品999| 成人中文字幕在线观看| 日韩av不卡在线| 久久久精品久久久| 国产精品久久久久久亚洲调教| 国产成人精品国内自产拍免费看| 色伦专区97中文字幕| 国产精品激情自拍| 色噜噜亚洲精品中文字幕| 国产欧美精品一区二区| 蜜月aⅴ免费一区二区三区| 日本国产精品视频| 97视频免费在线看| 亚洲自拍另类欧美丝袜| 狠狠躁夜夜躁人人爽超碰91| 91香蕉电影院| 欧美美女15p| 欧美一级视频免费在线观看| 欧美巨猛xxxx猛交黑人97人| 疯狂做受xxxx高潮欧美日本| 日韩成人av在线播放| 91国内揄拍国内精品对白| 亚洲人av在线影院| 日韩美女在线看| 国产精品久久久久福利| 欧美精品在线免费观看| 日韩在线视频二区| 国产欧美日韩免费| 亚洲午夜国产成人av电影男同| 国产欧美日韩精品专区| 国产精品中文久久久久久久| 2021久久精品国产99国产精品| 久久视频精品在线|