update_attached_file()WP 2.1.0

Обновляет путь прикрепленного файла (вложения) в метаполе "_wp_attached_file". Путь обновляется для указанного ID вложения.

update_attached_file() не перемещает файл, а просто обновляет метаполе _wp_attached_file, обычно, после того, как файл был перемещен.

Эта функция используется внутри wp_insert_post() и обычно отдельно не используется.

В метаполе сохраняется не полный путь от корня сервера, а относительный путь от каталога загрузок.

Возможно вместо этой функции, вам пригодится хук-фильтр update_attached_file - он используется в функции перед тем, как обновить данные в метаполе.

Работает на основе: update_post_meta(), delete_post_meta()
Хуки из функции

Возвращает

true|false. Логические: true при удачном обновлении и false при неудачном.

Использование

update_attached_file( $attachment_id, $file );
$attachment_id(число) (обязательный)
ID прикрепленного файла (вложения).
$file(строка) (обязательный)
Новый путь до файла-вложения, который нужно записать.

Примеры

0

#1 Пример работы

Допустим мы записали новый файл и нам нужно обновить путь до этого файла, который хранится в метаполе _wp_attached_file.

update_attached_file( $post_ID, $postarr['file'] );

Список изменений

С версии 2.1.0 Введена.

Код update_attached_file() WP 6.5.2

function update_attached_file( $attachment_id, $file ) {
	if ( ! get_post( $attachment_id ) ) {
		return false;
	}

	/**
	 * Filters the path to the attached file to update.
	 *
	 * @since 2.1.0
	 *
	 * @param string $file          Path to the attached file to update.
	 * @param int    $attachment_id Attachment ID.
	 */
	$file = apply_filters( 'update_attached_file', $file, $attachment_id );

	$file = _wp_relative_upload_path( $file );
	if ( $file ) {
		return update_post_meta( $attachment_id, '_wp_attached_file', $file );
	} else {
		return delete_post_meta( $attachment_id, '_wp_attached_file' );
	}
}