Обновление данных вложения 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

}

Любой толчок в правильном направлении будет принята с благодарностью.

Спасибо!

1 ответ

Я был в состоянии использовать как 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 );

        }

    }
Другие вопросы по тегам