web-dev-qa-db-fra.com

Texte alternatif pour les pièces jointes?

Comment puis-je demander aux utilisateurs de saisir du texte alternatif lors de l'ajout de pièces jointes?

Le texte alternatif est étonnamment enterré; la seule façon pour moi de récupérer le texte alternatif est via la fonction wp_get_attachment_image(), ainsi:

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);

}

Ce qui produit juste du HTML de merde:

<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" />

Donc, je pourrais analyser ce code HTML, après quoi je pourrais essayer d’émettre une sorte d’erreur de validation. Cela semble assez compliqué, et peut aussi être mauvais UX (puisqu'il ne décorerait pas le champ Alt Text lui-même avec un astérisque "obligatoire" ou quoi que ce soit).

J'aimerais vraiment pouvoir simplement utiliser le filtre ci-dessus, wp_insert_attachment_data, et rejeter tout tableau sans alt texte; hélas, le texte de remplacement ne figure ni dans $data, ni dans $uncleaned_data. Ou apparemment, nulle part ailleurs d'ailleurs.

D'autres idées? Voici une photo de l'interface:

 WP interface 

5
allanberry

Le code ci-dessous ne fonctionnera qu'une fois lorsqu'un fichier est téléchargé.

  1. Nous conservons un tableau ($image_mimes) de types d'image acceptables
  2. Nous obtenons le type de mime de pièce jointe actuel
  3. Nous nous assurons que ce qui est donné est bien une image (parce que nous n’avons pas besoin de postmeta inutile encombrant notre table)
  4. Nous prenons le titre de la pièce jointe et le fixons au texte alternatif initialement

Après cela, l'utilisateur peut le mettre à jour comme bon lui semble (ou le supprimer complètement):

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