Wordpress更新附件数据

时间:2017-08-08 19:53:10

标签: wordpress media-library

我正在尝试向扩展媒体管理的插件添加功能。此功能允许您重命名附件文件。我已经能够使用以下代码完成此操作。

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

}

非常感谢任何正确方向的推动。

谢谢!

1 个答案:

答案 0 :(得分: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 );

        }

    }