wp_insert_attachment_data
Позволяет изменить данные вложения (файла медиатеки) перед обновлением или добавлением в базу данных.
Использование
add_filter( 'wp_insert_attachment_data', 'wp_kama_insert_attachment_data_filter', 10, 4 ); /** * Function for `wp_insert_attachment_data` filter-hook. * * @param array $data An array of slashed, sanitized, and processed attachment post data. * @param array $postarr An array of slashed and sanitized attachment post data, but not processed. * @param array $unsanitized_postarr An array of slashed yet *unsanitized* and unprocessed attachment post data as originally passed to wp_insert_post(). * @param bool $update Whether this is an existing attachment post being updated. * * @return array */ function wp_kama_insert_attachment_data_filter( $data, $postarr, $unsanitized_postarr, $update ){ // filter... return $data; }
- $data(массив)
Массив с очищенными данными о вложении. Пример данных при добавлении нового изображения:
Array ( [post_author] => 1 [post_date] => 2019-05-27 17:11:32 [post_date_gmt] => 2019-05-27 13:11:32 [post_content] => [post_content_filtered] => [post_title] => w3hosK-d_yE [post_excerpt] => [post_status] => inherit [post_type] => attachment [comment_status] => open [ping_status] => closed [post_password] => [post_name] => w3hosk-d_ye [to_ping] => [pinged] => [post_modified] => 2019-05-27 17:11:32 [post_modified_gmt] => 2019-05-27 13:11:32 [post_parent] => 0 [menu_order] => 0 [post_mime_type] => image/jpeg [guid] => http://wp-test.ru/wp-content/uploads/2019/05/w3hosK-d_yE-2.jpg )
- $postarr(массив)
Массив со «слэшенными» и сериализованными данными о вложении. Пример данных при добавлении нового изображения:
Array ( [post_author] => 1 [post_content] => [post_content_filtered] => [post_title] => w3hosK-d_yE [post_excerpt] => [post_status] => draft [post_type] => attachment [comment_status] => [ping_status] => [post_password] => [to_ping] => [pinged] => [post_parent] => 0 [menu_order] => 0 [guid] => http://wp-test.ru/wp-content/uploads/2019/05/w3hosK-d_yE-2.jpg [import_id] => 0 [context] => [file] => F:\server\sites\wp-test.ru/wp-content/uploads/2019/05/w3hosK-d_yE-2.jpg [post_mime_type] => image/jpeg [ID] => 0 [filter] => db )
- $unsanitized_postarr(массив) (WP 5.4.1)
- Массив со «слэшенными», но еще не сериализованными данными о вложении.
- $update(true/false) (WP 6.0)
- true - когда обновляется уже существующее вложение (пост). false - когда добавляется новое.
Примеры
#1 Удалим заголовок (title) изображения при загрузке в медиабиблиотеку
add_filter( 'wp_insert_attachment_data', 'clear_image_title_when_loading', 10, 2 ); /** * Удаляет заголовок изображения при его загрузке в медиабиблиотеку. * * @param array $data * @param array $postarr * * @return array */ function clear_image_title_when_loading( $data, $postarr ) { // Если это не изображение, то возвращаем оригинальные данные. if ( ! file_is_displayable_image( $postarr['file'] ) ) { return $data; } /* * Если ID нет, значит это добавление и надо title очистить. * Если ID есть, значит это обновление и title изменять не надо. */ if ( empty( $postarr['ID'] ) ) { $data['post_title'] = ''; } return $data; }
Список изменений
С версии 3.9.0 | Введена. |
С версии 5.4.1 | The $unsanitized_postarr parameter was added. |
С версии 6.0.0 | The $update parameter was added. |
Где вызывается хук
wp_insert_attachment_data
wp-includes/post.php 4746
$data = apply_filters( 'wp_insert_attachment_data', $data, $postarr, $unsanitized_postarr, $update );