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