这里有一个想法,可能需要进一步测试:
/**
* Cropped header image with the same description/caption as the original image
*/
add_filter( \'wp_create_file_in_uploads\', function( $cropped, $attachment_id )
{
add_filter( \'wp_insert_attachment_data\', function( $data ) use ( $attachment_id)
{
if( doing_action( \'wp_ajax_custom-header-crop\' ) && is_array( $data ) )
{
// Copy the original description to the cropped image
$data[\'post_content\'] = get_post_field( \'post_content\', $attachment_id, \'db\' );
// Copy the original caption to the cropped image
$data[\'post_excerpt\'] = get_post_field( \'post_excerpt\', $attachment_id, \'db\' );
}
return $data;
} );
return $cropped;
}, 10, 2 );
这里我们复制
description
和
caption
从原始图像到
wp_create_file_in_uploads
和
wp_insert_attachment_data
过滤器。要在自定义标题ajax裁剪的上下文中对其进行限制,请使用以下选项进行检查:
doing_action(\'wp_ajax_custom-header-crop\')`
这里我们还传递
$attachment_id
, 在使用关键字的帮助下,将原始图像转换为闭包。
如果我们还需要复制图像元,那么我们可以通过wp_header_image_attachment_metadata
过滤器:
/**
* Cropped header image with the same image meta as the original one
*/
add_filter( \'wp_create_file_in_uploads\', function( $cropped, $attachment_id )
{
add_filter( \'wp_header_image_attachment_metadata\', function( $metadata ) use ( $attachment_id )
{
if( doing_action( \'wp_ajax_custom-header-crop\' ) && isset( $metadata[\'image_meta\'] ) )
{
// Fetch the image meta of the original image
$original_metadata = wp_get_attachment_metadata( $attachment_id );
// Copy the original image meta data for the cropped image
if( is_array( $original_metadata[\'image_meta\'] ) )
$metadata[\'image_meta\'] = $original_metadata[\'image_meta\'];
}
return $metadata;
} );
return $cropped;
}, 10, 2 );
希望您能根据需要进行调整。