WP_MAYBE_GENERATE_ATTACHMENT_METADATA() │ WP 3.9.0
Функция WP_MAYBE_GENERATE_ATTACHMENT_METADATA() может попытаться создать метаданные для вложения, если такие метаданные отсутствуют.
Использование функций
Эта функция использует несколько других функций для своей работы:
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:
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 );
}
}
}
Связанные функции
Вот некоторые функции, которые могут быть полезны при работе с метаданными:
delete_post_meta_by_key()
wp_generate_attachment_metadata()
wp_get_attachment_metadata()
wp_read_audio_metadata()
wp_update_attachment_metadata()
Эта информация может помочь вам лучше понять, как работает функциональность метаданных вложений в WordPress и как использовать функцию WP_MAYBE_GENERATE_ATTACHMENT_METADATA() для вашей работы.