wp_maybe_generate_attachment_metadata()
Создает метаданные вложения, если они отсутствуют, в противном случае ничего не делает.
Функция добавит метаданные в метаполя (см. wp_update_attachment_metadata() ), только если:
- Метаданных еще нет - wp_get_attachment_metadata() ничего не возвращает.
- Файл физически существует - путь для проверки файла получается через get_attached_file().
Работает на основе: get_attached_file(), wp_get_attachment_metadata(), wp_update_attachment_metadata(), wp_generate_attachment_metadata()
Хуков нет.
Возвращает
null
. Ничего.
Использование
wp_maybe_generate_attachment_metadata( $attachment );
- $attachment(WP_Post) (обязательный)
- Объект вложения, метаданные которого нужно сгенерировать.
Примеры
#1 Генерация метаданных вложения
Этот пример показывает как создать метаданные для добавленного в медиатеку файла. Предполагается, что метаданные по какой-то причине не были созданы автоматически (обычно они создаются автоматом). Если данные уже существуют (функция wp_get_attachment_metadata() что-либо возвращает), то функция просто ничего не сделает.
$attachment = get_post( 123 ); wp_maybe_generate_attachment_metadata( $attachment );
Список изменений
С версии 3.9.0 | Введена. |
Код wp_maybe_generate_attachment_metadata() wp maybe generate attachment metadata WP 6.1.1
function wp_maybe_generate_attachment_metadata( $attachment ) { if ( empty( $attachment ) || empty( $attachment->ID ) ) { return; } $attachment_id = (int) $attachment->ID; $file = get_attached_file( $attachment_id ); $meta = wp_get_attachment_metadata( $attachment_id ); if ( empty( $meta ) && file_exists( $file ) ) { $_meta = get_post_meta( $attachment_id ); $_lock = 'wp_generating_att_' . $attachment_id; if ( ! array_key_exists( '_wp_attachment_metadata', $_meta ) && ! get_transient( $_lock ) ) { set_transient( $_lock, $file ); wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) ); delete_transient( $_lock ); } } }