web-dev-qa-db-fra.com

Application de la classe aux liens autour des images auto-hébergées incorporées aux articles/pages

J'ai donc besoin d'ajouter une classe aux liens autour des images à des fins de visionneuse. Mais uniquement pour les images du répertoire de téléchargement, pas pour les externes. J'ai trouvé cette solution par @ TommiForsström ici :

function add_colorbox_class_to_image_links($html, $attachment_id, $attachment) {
$linkptrn = "/<a[^>]*>/";
$found = preg_match($linkptrn, $html, $a_elem);

// If no link, do nothing
if($found <= 0) return $html;

$a_elem = $a_elem[0];

// Check to see if the link is to an uploaded image
$is_attachment_link = strstr($a_elem, "wp-content/uploads/");

// If link is to external resource, do nothing
if($is_attachment_link === FALSE) return $html;

if(strstr($a_elem, "class=\"") !== FALSE){ // If link already has class defined inject it to attribute
    $a_elem_new = str_replace("class=\"", "class=\"colorbox ", $a_elem);
    $html = str_replace($a_elem, $a_elem_new, $html);
}else{ // If no class defined, just add class attribute
    $html = str_replace("<a ", "<a class=\"colorbox\" ", $html);
}

return $html;
}

add_filter('image_send_to_editor', 'add_colorbox_class_to_image_links', 10, 3);

On dirait que c'est exactement ce dont j'ai besoin, sauf que ça ne marche pas. Je l'ai essayé sur une installation propre WP trente-treize. Des pensées? Merci!

1
Nikita

Eh bien, je vais répondre à ma question idiote moi-même. Comme l'explique Nice, le filtre image_send_to_editor s'exécute dans la fonction get_image_send_to_editor qui est chargée de l'envoi du lien HTML qui entoure les images envoyées à l'éditeur. Ce filtre s'exécute lorsque vous insérez une image à l'aide de Media Uploader dans l'éditeur. Il ne s’applique pas à vos images existantes dans vos publications/pages existantes.

2
Nikita