2010-07-16 50 views
0

是否有可能將附件頁slu更改爲引用文件名?總之...我使用Gallery Shortcode來建立一個簡單的基於頁面的畫廊。更改wordpress庫短代碼slug到文件名

我在上傳過程中(更改爲3b1871561aab.jpg)更改原始文件名(如DSC1223.jpg),但它不會在網址中顯示爲slug。它只使用DSC1223。

無論如何改變ist?

問候,史蒂夫

,最好的辦法是寫這樣的事情在我的functions.php

function twentyten_filter_wp_handle_upload() { 

    $upload = wp_handle_upload(); 

} 

add_filter('wp_handle_upload', 'twentyten_filter_wp_handle_upload', 10, 2); 
+0

你需要以某種形式自動化嗎?或者它是一個關閉?一個快速解決方案是編輯'wp_posts'數據庫表中的'post_name'字段 - 這是您會發現'DSC1223'被保留和使用的地方。 – TheDeadMedic 2010-07-16 14:33:59

+0

是的,我需要自動化這個。這在上傳過程中會很棒。 – gearsdigital 2010-07-16 14:47:44

回答

2

添加這個到hash upload filename plugin,你應該是好去;

/** 
* Filter new attachments and set the post_name the same as the hashed 
* filename. 
* 
* @param int $post_ID 
*/ 
function change_attachment_name_to_hash($post_ID) 
{ 
    $file = get_attached_file($post_ID); 
    $info = pathinfo($file); 
    $name = trim(substr($info['basename'], 0, -(1 + strlen($info['extension'])))); 
    wp_update_post(array(
     'ID' => $post_ID, 
     'post_name' => $name 
    )); 
} 
add_action('add_attachment', 'change_attachment_name_to_hash'); 

不要猶豫,問你是否不確定每行是幹什麼的!

UPDATE:

此功能掛鉤到add_attachment事件,只是後一個新的附件保存到數據庫中。此操作從wp_insert_attachment()內調用。

我們首先抓取附件的文件名get_attached_file())。然後,我們使用原生PHP函數pathinfo()來獲取路徑組件,並將目錄路徑和文件擴展名除去。

然後我們調用wp_update_post(),更新數據庫中附件的post_name

+0

如果你可以解釋你的代碼,那將會很棒:)我已經在第186行的wp-admin/include/media.php中找到了代碼的正確部分。但是我找不到鉤住這個函數的方法因爲我真的不知道如何傳遞數據。再次感謝...... TheDeadMedic先生!如果我能以某種方式幫助你...我的家就是前端:) – gearsdigital 2010-07-17 16:37:18

+0

「我在第186行的wp-admin/include/media.php中找到了正確的代碼部分」 - 你是什麼意思?只需將本答案中的所有代碼添加到我的其他答案的插件代碼底部,即可開始使用。 – TheDeadMedic 2010-07-17 18:03:21

+0

當然。我已經合併了你的代碼的兩個部分,它完美的工作!我的意思是''media_handle_upload()'函數通常做這個工作。這是標題和標題默認值等的相關代碼。它將處理文件上傳POST本身並創建附件帖子。無法更好地解釋它。 – gearsdigital 2010-07-17 18:22:23