2017-08-08 93 views
0

我正在嘗試將功能添加到擴展媒體管理的插件。該功能將允許您重命名附件文件。我已經能夠用下面的代碼來完成它。Wordpress更新附件數據

public function update_attachment_filename($post_ID) { 

    // Get path to existing file 
    $file = get_attached_file($post_ID); 
    $path = pathinfo($file); 

    // Generate new file name 
    $file_updated = $path['dirname'] . '/' . $_POST['update_filename'] . '.' . $path['extension']; 

    // Update the name and reference to file 
    rename($file, $file_updated); 
    update_attached_file($post_ID, $file_updated); 

} 

在原來的文件被使用上述方法改名,不更新插件/主題定義的所有額外的圖像尺寸。我正在努力找出完成此任務的最佳方式。

我查看了wp_update_attachment_metadata()wp_generate_attachment_metadata()但我不確定他們是否會給我所需的功能。

此外,我已經研究過的東西,如:

$file_meta = wp_get_attachment_metadata($post_ID); 

foreach($file_meta['sizes'] as $image) { 

    // Do something 

} 

在正確的方向輕推任意將不勝感激。

謝謝!

回答

0

我能夠利用wp_generate_attachment_metadata()wp_update_attachment_metadata()函數來實現期望的最終結果。

public function update_attachment_filename($post_ID) { 

     if(isset($_POST['update_filename']) && ! empty($_POST['update_filename'])) { 

      // Get path to existing attachment 
      $file = get_attached_file($post_ID); 
      $path = pathinfo($file); 

      // Create new attachment name 
      $file_updated = $path['dirname'] . '/' . $_POST['update_filename'] . '.' . $path['extension']; 

      // Update the attachment name 
      rename($file, $file_updated); 
      update_attached_file($post_ID, $file_updated); 

      // Update attachment meta data 
      $file_updated_meta = wp_generate_attachment_metadata($post_ID, $file_updated); 
      wp_update_attachment_metadata($post_ID, $file_updated_meta); 

     } 

    }