wordpress上傳的圖片或文件名都不是我喜歡的,我希望把這些按文件名或都是日期生成文件了,那么要如何操作呢,下面我整理了三種不同的方法來實現上傳文件按日期生成文件名的例子.
對于 WordPress 上傳圖片附件命名的問題,我個人是趨向于用規則重新給圖片命名,這樣方便后期圖片的遷移和管理,周良博客 目前使用的圖片附件命名方式是“人工智能。。。”,就是自己手動修改圖片的名稱,和每篇文章的標題中英文相對,但這個方法對很多圖片量很大的站點來說,太過于煩瑣,所以周良這里給大家一個 WordPress小技巧,可以讓WordpPress 上傳圖片的時候,自動根據日期時間修改圖片地址名稱。
我們可以通過下面的代碼實現
方法一,插件形式,代碼如下:
- <?php
- function huilang_wp_handle_upload_prefilter($file){
- $time=date("Y-m-d");
- $file['name'] = $time."".mt_rand(1,100).".".pathinfo($file['name'] , PATHINFO_EXTENSION);
- return $file;
- }
- add_filter('wp_handle_upload_prefilter', 'huilang_wp_handle_upload_prefilter');
使用方法:把這段代碼另存為 .php 文件,上傳到 wp-content/plugins 目錄下,然后在后臺啟用這個插件即可,如果不想以插件的形式使用,可以把這段代碼黏貼到你當前 WordPress 主題的 functions.php 中(黏貼到 functions.php 中時,請一定要去掉本代碼第一行的“<?php”,不然會導致網站崩潰).
注:上面的代碼修改圖片改名稱的機制為“年月日+隨機數字”,如果你想要加上時分秒,請修改第12行 $time=date(“Y-m-d”); 為 $time=date(“Y-m-d H:i:s”); 即可.
方法二:直接使用在functions.php加如下代碼:
- //自動改圖片文件名稱
- function huilang_wp_handle_upload_prefilter($file){
- $time=date("Y-m-d");
- $file['name'] = $time."".mt_rand(1,100).".".pathinfo($file['name'] , PATHINFO_EXTENSION);
- return $file;
- }
- add_filter('wp_handle_upload_prefilter', 'huilang_wp_handle_upload_prefilter');
這樣做的好處有:有些主機不支持中文名稱,會導致上傳的圖片不會正常顯示在用戶的瀏覽器上,ftp下載的中文圖片名稱的時候亂碼,如果你是備份到本地然后恢復的時候,那就全毀了(額,我就是受害者,so...);
提示:上面是改名稱為年月日+隨機數字,要想加上時分秒,修改第三行 $time=date("Y-m-d"); 為 $time=date("Y-m-d H:i:s"); 即可.
方法三,同樣是在function函數中操作
用過wordpress的應該都知道如果我們上傳的文件的名字中有中文,上傳到linux服務上后發現會是亂碼,所以有必要把上傳的文件做一個自動重命名,這樣也會方便我們管理
在functions.php中加入以下代碼:
- function new_filename($filename) {
- $info = pathinfo($filename);
- $ext = emptyempty($info['extension']) ? '' : '.' . $info['extension'];
- $name = basename($filename, $ext);
- return md5($name) . $ext;
- }
- add_filter('sanitize_file_name', 'new_filename', 10);
添加保存之后,就可以實現了文件的自動更名,自動生成的是一個32個的md5加密的文件名,如果你認識32位的文件名太長了,你可以使用 substr()來截取你想要的長度,代碼如下,我使用的是15位:
- function new_filename($filename) {
- $info = pathinfo($filename);
- $ext = emptyempty($info['extension']) ? '' : '.' . $info['extension'];
- $name = basename($filename, $ext);
- return substr(md5($name), 0, 15) . $ext;
- }
- add_filter('sanitize_file_name', 'new_filename', 10);
新聞熱點
疑難解答
圖片精選