WordPress 判断并自动添加图片 Alt 和 Title 属性-WordPress开发教程

做 SEO 优化时,给图片加上 alt 属性是很有必要的,于是网上找了方法,很多方法没有判断功能,都是无论你是否添加 alt 属性就直接强制替换并启用文章标题为图片 alt 内容,这样显

做 SEO 优化时,给图片加上 alt 属性是很有必要的,于是网上找了方法,很多方法没有判断功能,都是无论你是否添加 alt 属性就直接强制替换并启用文章标题为图片 alt 内容,这样显然不是很好。终于在某一天找到了一个好的方法,使用此代码后,你无需担心是否遗漏 alt 属性,并且可以随自己的喜好添加个性的 alt 属性。

1.判断并自动添加图片 Alt 属性、强制添加图片 Title 属性

/**
* WordPress判断并自动添加图片alt和title属性
* https://www.ilxtx.com/how-to-add-alt-and-title-properties-to-image-automatically.html
*/
/* 智能判断添加图片alt属性 来自 @缙哥哥的博客*/
    function lxtx_image_alt( $imgalt ){
            global $post;
            $title = $post->post_title;
            $imgUrl = "<img\\s[^>]*src=(\\"??)([^\\" >]*?)\\\\1[^>]*>";
            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','lxtx_image_alt');
 
/* 强制用文章标题作为图片的title属性。不想设置图片的title属性的话可删除掉下面的代码! */
function lxtx_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','lxtx_image_title',15);

因为没有找到判断并自动添加图片 title 属性的代码,所以就使用了强制用文章标题作为图片的 title 属性方法。如果大家有能够通过判断,不覆盖自己设置的图片 title 的方法的话,请不宁赐教!(已找到,见方法 3,感谢 @boke112 导航)。

2.另外在给出一种强制使用文章标题做为图片 Alt 和 Title 属性的方法

/* wordpress强制使用文章标题做为图片alt和title属性
/* https://www.ilxtx.com/how-to-add-alt-and-title-properties-to-image-automatically.html */
function lxtx_image_alt_title($content){
    global $post;
    $pattern = "/<img(.*?)src=('|\\")(.*?).(bmp|gif|jpeg|jpg|png)('|\\")(.*?)>/i";
    $replacement = '<img$1src=$2$3.$4$5 alt="'.$post->post_title.'" title="'.$post->post_title.'"$6>';
    $content = preg_replace($pattern,$replacement,$content);
    return $content;
}
add_filter('the_content','lxtx_image_alt_title',15);

此方法的特点是,无论图片是否设置 alt 和 title 属性,都会强制使用文章的标题作为图片的 alt 和 title 属性。

3.判断并自动添加图片 Alt 和 Title 属性(推荐)

/**
* WordPress判断并自动添加图片alt和title属性
* https://www.ilxtx.com/how-to-add-alt-and-title-properties-to-image-automatically.html
*/
function lxtx_image_alt_title($imgalttitle) {
    global $post;
    $category = get_the_category();
    $flname = $category[0]->cat_name;
    $btitle = get_bloginfo();
    $imgtitle = $post->post_title;
    $imgUrl = "<img\\s[^>]*src=(\\"??)([^\\" >]*?)\\\\1[^>]*>";
    if (preg_match_all("/$imgUrl/siU", $imgalttitle, $matches, PREG_SET_ORDER)) {
        if (!emptyempty($matches)) {
            for ($i = 0; $i < count($matches); $i++) {
                $tag = $url = $matches[$i][0];
                $j = $i + 1;
                $judge = '/title=/';
                preg_match($judge, $tag, $match, PREG_OFFSET_CAPTURE);
                if (count($match) < 1) $altURL = ' alt="' . $imgtitle . ' ' . $flname . ' 第' . $j . '张" title="' . $imgtitle . ' ' . $flname . ' 第' . $j . '张-' . $btitle . '" ';
                $url = rtrim($url, '>');
                $url.= $altURL . '>';
                $imgalttitle = str_replace($tag, $url, $imgalttitle);
            }
        }
    }
    return $imgalttitle;
}
add_filter('the_content', 'lxtx_image_alt_title');

以上代码的特点是:

会智能判断,如果没有 alt 或 title 属性,那么就会自动给该图片添加上 alt 和 title 属性;

alt 属性显示形式为“文章标题 分类名称 第几张”,title 属性显示形式为“文章标题 分类名称 第几张-站点名称”。

一点小缺陷:如果 img 标签中的 alt=""和 title=""时,不会添加相应的 alt 和 titl 属性。

上述 3 种方法,大家取舍着用!

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/121976

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注