При обрезке изображения заголовка сохраняйте метаданные (например, имя, описание и т. Д.) Из исходного изображения?

В настоящее время я использую WordPress в Пользовательских заголовках , чтобы получить изображения для слайд-шоу на главной странице мой веб-сайт. По большей части это работало по назначению; он позволяет мне загружать набор изображений и визуализировать клиента, что происходит.

Однако я нашел то, что не было идеальным. Когда вы загружаете изображение заголовка, а затем обрезаете его, «метаданные» (то есть имя, описание и т. Д.), Которые вы устанавливаете на исходном изображении, не переносятся на недавно обрезанное изображение (которое сохраняется отдельно от оригинала ). Это создает впечатление, что «метаданные» не были сохранены для изображения заголовка при его добавлении. Единственный способ обновить эти «метаданные» - это перейти в медиа-библиотеку и отредактировать ее оттуда. Как вы можете видеть, это не очень интуитивный UX и может вызвать путаницу.

Лучшим решением, о котором я могу думать, было бы как-то подключиться к событию WordPress и перенести «метаданные» в исходное изображение на обрезанное изображение. Хотя, насколько я могу судить, нет никакого способа сделать это, поэтому я хотел бы услышать ваши мысли.

Я открыт для всех идей и решений.

Вот более наглядное представление того, что я описываю:

 введите описание изображения здесь>> </a> </p>

<p> <a href= введите описание изображения здесь>> </a> </p>

<p> <a href= введите описание изображения здесь>> </a> </p>

<p> <a href= введите описание изображения здесь>> </a> </p>

<p> <a href= введите описание изображения здесь>> </a> </p>

<p> <a href= введите описание изображения здесь>> </a> </p>

<p> <a href= введите описание изображения здесь>> </a> </p></body></html>

7 голосов | спросил Josh Foskett 13 Maypm16 2016, 22:29:45

1 ответ


4

Вот одна идея, которая может потребовать дальнейшего тестирования:

/**
 * 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 crop , мы проверяем его с помощью:

 doing_action('wp_ajax_custom-header-crop')` 

Здесь мы также передаем $attachment_id исходного изображения в закрытие с помощью используйте .

Если нам нужно скопировать meta ​​em>, то мы могли бы использовать аналогичный подход через 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 );

Надеюсь, вы сможете настроить его на свои нужды.

ответил birgire 14 Mayam16 2016, 00:43:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132