web-dev-qa-db-fra.com

Ajouter un paramètre d'affichage des pièces jointes personnalisé pour les images

J'ai fait beaucoup de recherches et je n'ai pas encore trouvé de solution. Pouvez-vous ajouter une option personnalisée dans la Attachment Display Settings (partie de la boîte de dialogue Insert Media dans l'éditeur de publication)?

Ce que je recherche, c'est la possibilité d'ajouter une ancre avec une classe autour de toutes les images dans les publications.

11
Doidgey

Cela ajoutera un champ dans l'écran d'édition de pièce jointe pour appliquer une classe à la balise img.

function IMGattachment_fields($form_fields, $post) {
    $form_fields["imageClass"]["label"] = __("Image Class");
    $form_fields["imageClass"]["value"] = get_post_meta($post->ID, "_imageClass", true);
    return $form_fields;
}
add_filter("attachment_fields_to_edit", "IMGattachment_fields", null, 2);
function my_image_attachment_fields_save($post, $attachment) {
    if ( isset($attachment['imageClass']) )
    update_post_meta($post['ID'], '_imageClass', $attachment['imageClass']);
    return $post;
}
add_filter("attachment_fields_to_save", "my_image_attachment_fields_save", null, 2);
1
rspny

Vous devez juste ajouter ceci au fichier functions.php de votre thème:

/**
* Attach a class to linked images' parent anchors
* e.g. a img => a.img img
*/
function give_linked_images_class($html, $id, $caption, $title, $align, $url, $size, $alt = '' ) {
    $classes = 'img'; // separated by spaces, e.g. 'img image-link'

    // check if there are already classes assigned to the anchor
    if ( preg_match('/<a.*? class=".*?">/', $html) ) {
    $html = preg_replace('/(<a.*? class=".*?)(".*?>)/', '$1 ' . $classes . '$2', $html);
    } else {
     $html = preg_replace('/(<a.*?)>/', '$1 class="' . $classes . '" >', $html);
    }
    return $html;
}

add_filter('image_send_to_editor','give_linked_images_class',10,8);
0
jim.duck