2017-08-08 11 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); 

     } 

    } 
関連する問題