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()
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.0.2
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); } } }