Post-Taxonomie aus Exif-Daten

Immer wenn ich einen Beitrag mit einem vorgestellten Bild poste, möchte ich die Exif-Daten aus diesem Bild extrahieren und als Ausdruck für eine Taxonomie anhängen. Ich habe bereits ein Plugin, das die relevanten Informationen extrahieren kann, aber ich weiß nicht, wo und wann wp_set_object_terms aufgerufen werden wp_set_object_terms

Kann mir jemand in die richtige Richtung zeigen?

Solutions Collecting From Web of "Post-Taxonomie aus Exif-Daten"

EXIF-Daten des Anhangsbilds abrufen

Da “ein Plugin” späteren Besuchern nicht weiterhilft, beginnen wir damit, wie wir das abrufen können:

 # Get the post ID: Use one of the following. Preferred is the API function get_the_ID() # $GLOBALS['post']->ID; # global $post; $post->ID; # get_the_ID(); $meta = wp_get_attachment_metadata( get_the_ID(), false ); # Fetch the EXIF data part $exif = $meta['image_meta']; 

Jetzt haben wir die EXIF-Daten in $exif gespeichert – um sicher zu gehen, dass wir nicht mit einem Image gehackt werden, vergessen Sie nicht, die Daten zu bereinigen / zu bereinigen, bevor Sie sie anzeigen (oder besser: speichern).

 # List of EXIF data entries: $created = date_i18n( get_option( 'date_format' ), strtotime( $meta['created_timestamp'] ) ); $copyright = filter_var( $meta['copyright'] ); $credit = filter_var( $meta['credit'] ); $title = filter_var( $meta['title'] ); $camera = filter_var( $meta['camera'] ); $shutter = number_format_i18n( filter_var( $meta['shutter_speed'], FILTER_SANITIZE_NUMBER_FLOAT ), 2 ); $iso = number_format_i18n( filter_var( $meta['iso'], FILTER_SANITIZE_NUMBER_FLOAT ) ); $focal = number_format_i18n( filter_var( $meta['focal_length'], FILTER_SANITIZE_NUMBER_FLOAT ), 2 ); $aperture = filter_var( $meta['aperture'] ); 

Bild EXIF ​​Meta als Ausdruck speichern

Dies wird möglicherweise (oder in fast jedem Fall) im Admin passieren, wir müssen die dort vorhandenen Hooks verwenden:

  • add_attachment (arg: $att_id )
  • edit_attachment (arg: $att_id )

wo beide ausgetriggers werden nach (was sonst) ein Bild wurde hochgeladen oder bearbeitet.

Dann ist da

  • media_send_to_editor (args: $html, $send_id, $attachment )
  • attachment_fields_to_save (args: $post, $attachment )

(mehr Infos in dieser Antwort )

Also ist das einzige, was zu tun ist

  1. Wählen Sie den richtigen Haken für Ihren Fall
  2. Extrahieren Sie die EXIF-Daten, die Sie als Ausdruck hinzufügen möchten
  3. füge den Begriff mit wp_set_object_terms() zu deiner gewünschten Taxonomie hinzu und wp_set_object_terms() in einem Callback, der dem oben ausgewählten Filter oder Hook angehängt ist:

     $terms = wp_set_object_terms( get_the_ID(), array( $meta['copyright'] ), 'your-taxonomy', # Do *append* the new term and not replace all others with it! TRUE ); # DEBUG: if ( is_wp_error( $terms ) ) exit( $terms->get_error_message() ); var_dump( $terms ); // should be an array of terms 

Sie sollten immer den Rückgabewert überprüfen (wie ich es mit is_wp_error() ), wenn Sie etwas verarbeiten. Wenn Sie nett sein wollen und dies ist etwas, wo Fehler aufgrund von fehlenden EXIF-Daten auftreten können, dann sollten Sie auch dort hineinspringen und einige Benutzer-Feedback geben – ein Admin-Hinweis zum Beispiel.