Make WordPress Core

Opened 10 years ago

Closed 10 years ago

#33772 closed enhancement (fixed)

Include IPTC Keywords in image_metadata array

Reported by: stevehoneynz's profile SteveHoneyNZ Owned by: wonderboymusic's profile wonderboymusic
Milestone: 4.4 Priority: normal
Severity: normal Version: 4.4
Component: Media Keywords: has-patch
Focuses: Cc:

Description

IPTC data is already parsed in the attachment metadata process, and use of IPTC keywords is often requested, and there are a number of plugin solutions for using keywords and other IPTC meta.

In core currently the comments around IPTC note that it's selecting only values considered to be "useful" and consistently avaialable. As Adobe and others have almost universally adopted IPTC tag 2#025 as containing keywords it would be useful for developers to have access to these in the image_meta array of attachment_metadata.

The attached demonstrates a small addition to the wp_read_image_metadata function which adds the keywords as a non-indexed array.

Possible negatives - the array values should potentially be escaped/sanitized (I'm unsure what the iptc parse function already does in this respect). Also as attachment_metadata is one serialized db entry images with exceptionally large amonuts of keywords added may become bloated, possibly limit to say 99 by trimming array.

As an example use case I was working on a plugin that bulk creates WooCommerce products from images for print/digital sales, I wanted to add the keywords as product tags for search purposes. With this addition I was able to accomplish that.

Attachments (5)

add-iptc-keywords-to-attachment-metadata.php (6.2 KB) - added by SteveHoneyNZ 10 years ago.
33772.patch (906 bytes) - added by SteveHoneyNZ 10 years ago.
image-with-iptc-keywords-test-patch-33772.jpg (172.5 KB) - added by SteveHoneyNZ 10 years ago.
Image with IPTC Keywords and other Adobe meta set
33772.diff (2.8 KB) - added by dbru 10 years ago.
33772.2.diff (2.6 KB) - added by swissspidy 10 years ago.

Download all attachments as: .zip

Change History (19)

#1 @SteveHoneyNZ
10 years ago

Also proposing passing the available $iptc array to wp_read_image_metadata filter fired at end of function to allow developers to access any available IPTC tag data and return it the meta array as they wish. Can't see any negative impact of this, and if adding keywords by default isn't thought a good idea as a default, then just including the iptc array in the filter would mean I could still accomplish the same functionality via the filter.

#2 @swissspidy
10 years ago

#33771 was marked as a duplicate.

#3 @swissspidy
10 years ago

  • Keywords needs-patch added

Hey there, thanks for your report and welcome to trac!

Could you please update a real patch showing the differences between the original file and your changes? You can read more about working with patches here: https://make.wordpress.org/core/handbook/tutorials/trac/submitting-a-patch/

#4 @swissspidy
10 years ago

  • Keywords needs-unit-tests added

@SteveHoneyNZ
10 years ago

#5 @SteveHoneyNZ
10 years ago

  • Keywords has-patch added; needs-patch removed

#6 @wonderboymusic
10 years ago

  • Keywords reporter-feedback added
  • Milestone changed from Awaiting Review to Future Release

@SteveHoneyNZ - can you upload an image to the ticket that has that IPTC data for testing?

@SteveHoneyNZ
10 years ago

Image with IPTC Keywords and other Adobe meta set

#7 @SteveHoneyNZ
10 years ago

The image above should return the following image_meta array from wp_get_attachment_metadata if patch is working as intended:

    [image_meta] => Array
        (
            [aperture] => 8
            [credit] => Photoshop Author
            [camera] => DMC-LX2
            [caption] => Photoshop Description
            [created_timestamp] => 1306315327
            [copyright] => Photoshop Copyrright Notice
            [focal_length] => 6.3
            [iso] => 100
            [shutter_speed] => 0.0025
            [title] => Photoshop Document Ttitle
            [orientation] => 1
            [keywords] => Array
                (
                    [0] => beach
                    [1] => baywatch
                    [2] => LA
                    [3] => sunset
                )

        )
Last edited 10 years ago by SteveHoneyNZ (previous) (diff)

#8 @swissspidy
10 years ago

  • Keywords reporter-feedback removed

Cool. I'm gonna write a test for that.

@dbru
10 years ago

#9 @swissspidy
10 years ago

  • Keywords needs-unit-tests removed
  • Milestone changed from Future Release to 4.4

@swissspidy
10 years ago

#10 @wonderboymusic
10 years ago

  • Owner set to wonderboymusic
  • Resolution set to fixed
  • Status changed from new to closed

In 34374:

Media: In wp_read_image_metadata(), include IPTC Keywords when available in $meta.

Adds unit test.

Props swissspidy, dbru, SteveHoneyNZ.
Fixes #33772.

#11 @wonderboymusic
10 years ago

In 34378:

After [34374], ensure that $iptc is defined.

See #33772.

This ticket was mentioned in Slack in #core by swissspidy. View the logs.


10 years ago

#13 @jorbin
10 years ago

  • Resolution fixed deleted
  • Status changed from closed to reopened

Unit test introduced here is broken due to missing test image.

#14 @jorbin
10 years ago

  • Resolution set to fixed
  • Status changed from reopened to closed

In 34448:

Add test image for test_exif_keywords test

[34374] added a test that relies on a new test image. This test image wasn't included in the commit. This fixes the broken Tests_Image_Meta::test_exif_keywords test.

Props swissspidy, SteveHoneyNZ.
Fixes #33772.

Note: See TracTickets for help on using tickets.