WordPress文章所有图片自动添加链接(图片路径|url|alt|class)

让WordPress文章里所有的图片自动添加超链接的方法汇总,可以链接到当前图片路径或者文章链接,也可以自定义图片和链接样式、属性,非常方法。WordPress文章里全部图片自动超链接也有弊端,下面会做详细的分析。欢迎拍砖!

首先,引入图片处理函数,打开你的主题目录下的functions.php,找个位置加上下面的代码

不论你如何处理文章里图片的链接,这都是必须的,这里把处理图片函数放在/inc/imgformat.php代码里,本人有代码洁癖,不喜欢functions.php里太多杂项了,找起来太费劲!

//引入图片处理函数,这里你可以注释下,养成好习惯
requireget_template_directory() . '/inc/imgformat.php';

1、让WordPress文章全部图片自动链接到这篇文章,在imgformat.php里加入以下代码:

<?php
//图片自动增加超链接到文章,并添加标题和ALT属性
function auto_post_link($content) {
 global $post;
 $content = preg_replace('/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', "<a href=\"".get_permalink()."\" title=\"".$post->post_title."\" ><img src=\"$2\" alt=\"".$post->post_title."\" /></a>", $content);
 return $content;
}
add_filter ('the_content', 'auto_post_link',0);
?>

弊端:必须文章里的图片是有链接的,不然会多出一个原来的链接。
举一反三,如果想让图片的链接变成原图的路径,那很简单,直接讲上面代码里的 href=\"".get_permalink()."\" 改为 href=\"$2\" 就可以了;
给链接或者图片增加样式,同下面的方法类似。

2、给WordPress文章里所有图片加上额外样式,现在很多的幻灯样式都会用到,比如本站的图片点击效果。

<?php
//图片自动链接到原图、增加额外样式
function pirobox_auto($content) {
    global $post;
    $pattern = "/<a(.*?)href=('|\")([A-Za-z0-9\/_\.\~\:-]*?)(\.bmp|\.gif|\.jpg|\.jpeg|\.png)('|\")([^\>]*?)>/i";
    $replacement = '<a$1href=$2$3$4$5$6 class="cboxElement" rel="example_group"'.$post->ID.'>';
    $content = preg_replace($pattern, $replacement, $content);
    return $content;
}
add_filter('the_content', 'pirobox_auto', 0);
?>

其中class="cboxElement" rel="example_group",你可以随意替换成你所需要的样式。
弊端:必须文章里的图片是有链接的,不然替换不到。

小结:

关于WordPress文章所有图片自动添加超链接到原来的图片路径,目前小拼SEM博客用的是前端jquery的处理方法,并没有涉及PHP操作,顺便也分享下好了

$(document).ready(function() {
 //图片自动链接
 $('.single-content img').each(function(i){
 if (! this.parentNode.href){
 $(this).wrap("<a href=\""+this.src+"\" class=\"cboxElement\" rel=\"example_group\"></a>");
 }
 });
 });

为什么不用上面的PHP正则函数处理呢?

其一,文章(有些文章字节多)全部用正则替换,还是会影响性能的,特别是高流量的站点;

其二,上面的方法也不是很完善,提供个思路,先正则清除所有的图片链接然后再继续即可;

其三,会丢失原来设置的图片样式、ALT标记等。

来自http://www.xp-sem.com/wordpress-image-addlink/