wordpress判断图片是否有alt属性,没有则添加标题为alt

Wordpress 思享 108浏览
摘要:
以前的博文很少配图,原则是没有图就不配。图片的alt和title属性完全被忽略了。后来开始慢慢匹配图片,图片的alt都是手动填入图片文件的名称,或者是空的。至于图片的标题属性,也是经过这一番折腾才加上去的。/*强制将文章的标题作为图片的标题属性。如果不想设置图片的title属性,可以删除下面的代码!

以前博文很少配图,原则是能不配图就不配,图片 alt 和 title 属性压根就没理会过。后来慢慢开始配图(囧~写不出字贴图补上),图片 alt 都是手动填入图片文件名称,或者空着,至于图片 title 属性也是这次折腾才加上了。

wordpress

实现代码

/**
* WordPress 判断并自动添加图片 alt 和 title 属性
*/
function theme_image_alt( $imgalt ){
    global $post;
    $title = $post->post_title;
    $imgUrl = "<img\s[^>]*src=(\"??)([^\" >]*?)\[^>]*>";
    if(preg_match_all("/$imgUrl/siU",$imgalt,$matches,PREG_SET_ORDER)){
        if( !empty($matches) ){
            for ($i=0; $i < count($matches); $i++){
                $tag = $url = $matches[$i][0];
                $judge = '/alt=/';
                preg_match($judge,$tag,$match,PREG_OFFSET_CAPTURE);
                if( count($match) < 1 )
                $altURL = ' alt="'.$title.'" ';
                $url = rtrim($url,'>');
                $url .= $altURL.'>';
                $imgalt = str_replace($tag,$url,$imgalt);
            }
        }
    }
    return $imgalt;
}
add_filter( 'the_content','theme_image_alt');

/* 强制用文章标题作为图片的 title 属性。不想设置图片的 title 属性的话可删除掉下面的代码! */
function theme_image_title($content){
    global $post;
    $pattern = "/<img(.*?)src=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";
    $replacement = '<img$1src=$2$3.$4$5 title="'.$post->post_title.'"$6>';
    $content = preg_replace($pattern,$replacement,$content);
    return $content;
}
add_filter('the_content','theme_image_title',15);

一点小缺陷:如果 img 标签中已经有了alt但是是空的,比如 alt="",则不会进行替换,这个可以在多加一个if语句进行查找替换即可

推荐阅读

纯代码实现wordpress附件页面重定向到文章或首页

前几天发现wordpress网站有评论留言的回顾。结果一看就是附件页面的垃圾评论。这才发现原来wordpress上传的附件也会有对应的页面。难怪之前收录了很多附件页面,但是我的机器人禁止了,忘记了。本来以为会禁用,结果只找到了在线使用插件的方法。最后......

Warning: call_user_func_array() expects parameter 1 to be a valid callback, function ‘fake_update_callback’

这是当一个被挂钩的函数名与挂钩关联不匹配时…这可能发生在重命名一个函数时,而不是在挂钩关联中重命名函数名时。如果强迫症受不了wordpress的主题提示,可以使用插件WP降级将版本设置为当前版本。...

wordpress升降到指定版本:WP Downgrade | Specific Core Version插件

背景:网站一直用4.9+版本,因为编辑器还是老的。如果是自动升级,是目前最高的版本,但是我想升级到最新的版本,4.9.22版。WP降级|特定核心版插件可以解决我的问题。设置好程序路径后,记得保存更改,然后“升/降级核心”会等待升级。如果是降级操作,为......