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:
Le code ci-dessous ne fonctionnera qu'une fois lorsqu'un fichier est téléchargé.
$image_mimes
) de types d'image acceptablesAprè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' );