it-swarm.com.de

Alternativtext für Anhänge validieren?

Wie kann ich verlangen, dass Benutzer beim Hinzufügen von Anhängen Alternativtext eingeben?

Alt-Text ist überraschenderweise vergraben; Die einzige Möglichkeit, den Alternativtext abzurufen, ist die Funktion wp_get_attachment_image(), also:

add_filter('wp_insert_attachment_data', 'print_metadata', 10, 2);
function print_metadata( $data, $uncleaned_data ) {

  $attachment_id = $arr['ID'];
  $meta = wp_get_attachment_image($attachment_id);
  error_log($meta);

}

Welches produziert nur einige beschissene HTML:

<img width="150" height="150" src="http://domain.local/wp-content/uploads/2016/05/cat2-1-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="My alt text" />

Also könnte ich diesen HTML-Code analysieren und dann versuchen, eine Art Validierungsfehler auszulösen. Dies scheint ziemlich kitschig zu sein und kann auch eine schlechte UX sein (da es das Alt-Text-Feld selbst nicht mit einem "erforderlichen" Sternchen oder etwas anderem schmücken würde).

Ich wünschte wirklich, ich könnte einfach den Filter oben, wp_insert_attachment_data, verwenden und jedes Array ohne Alternativtext ablehnen. Leider befindet sich der Alternativtext weder im $data noch im $uncleaned_data. Oder anscheinend irgendwo anders.

Irgendwelche anderen Ideen? Hier ist ein Bild der Benutzeroberfläche:

 WP interface 

5
allanberry

Der folgende Code wird nur einmal ausgeführt, wenn eine Datei hochgeladen wird.

  1. Wir behalten ein Array ($image_mimes) akzeptabler Bild-Mimetypen
  2. Wir erhalten den aktuellen MIME-Typ des Anhangs
  3. Wir stellen sicher, dass das, was gegeben wird, tatsächlich ein Bild ist (weil wir kein unnötiges Post-Meta brauchen, das unseren Tisch überfüllt).
  4. Wir greifen den Titel aus dem Anhang und setzen ihn zunächst auf den Alt-Text

Danach kann der Benutzer es nach Belieben aktualisieren (oder ganz entfernen):

function add_image_alt( $attachment_id ) {
    $image_mimes     = array( 'image/jpeg', 'image/gif', 'image/png', 'image/bmp', 'image/tiff', 'image/x-icon' );
    $attachment_type = get_post_mime_type( $attachment_id );

    if( in_array( $attachment_type, $image_mimes ) ) {
        $attachment_title = get_the_title( $attachment_id );
        update_post_meta( $attachment_id, '_wp_attachment_image_alt', sanitize_text_field( $attachment_title ) );
    }
}
add_action( 'add_attachment', 'add_image_alt' );
1
Howdy_McGee