Wordpress自定义链接,用于从媒体库中包装插入的图像

时间:2015-04-11 06:48:01

标签: php wordpress

我没想到这很难,但到目前为止还没有实现它。

我只想在使用媒体库将图像插入帖子时,为包含img标记的链接标记添加一个类名。

我想转此

<a href="http://..."><img src="http://..." alt="..." width="780" height="490" class="alignnone size-full wp-image-12" /></a>

进入这个

<a href="http://..." class="fancylink fancybox.ajax"><img src="http://..." alt="..." width="780" height="490" class="alignnone size-full wp-image-12" /></a>

我可以使用jQuery做得很简单,但我更喜欢使用wordpress过滤器或自定义函数。因此帖子中的输出包括类名。

1 个答案:

答案 0 :(得分:0)

感谢msbodetti,解决方案如下。

 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=\"fancylink ", $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=\"fancylink \" data-fancybox-group=\"gallery\" ", $html);
    }

    return $html;
}

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