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);
}
}
}