网站运行的时间长了,里面引用的一些链接可能就会已经失效了,甚至是跳转到一些打不开的网站,这个时候无论是打不开还是链接打开后和文章引用时候说的不一样,都是对用户非常不好的体验,所以我们就需要把这些失效链接删除,下面我就来分享WordPress去除文章失效链接的方法:
注意:操作之前先备份数据,先备份数据,先备份数据,重要的事情说三遍。养成好习惯。
使用代码实现
把下面代码添加到主题的functions.php文件,既可以实现删除文章失效链接了:
function check_broken_links($content) {
// 使用正则表达式匹配所有的链接
$pattern = '/<a(.*?)href=["\'](http[s]?:\/\/[^"\']+)["\'](.*?)>(.*?)<\/a>/i';
preg_match_all($pattern, $content, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
$url = $match[2];
$link_text = $match[4];
// 使用cURL检查链接的有效性
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// 如果返回的HTTP状态码不等于200、301或302,则认为链接失效
if ($retcode != 200 && $retcode != 301 && $retcode != 302) {
// 创建一个新的链接,使用删除线,并添加broken-link类
$new_link = '<span class="broken-link"><s>' . $link_text . '</s></span>';
// 在内容中替换旧的链接
$content = str_replace($match[0], $new_link, $content);
}
}
return $content;
}
// 将我们的函数添加到'the_content'过滤器
add_filter('the_content', 'check_broken_links');
上面的代码的作用是提取文章中所有的链接的,然后通过PHP的cURL函数检测这个链接是否有效(如果状态码不等于200、301或302就认为是无效)。注释写的很清除,就不重复叙述了。
这个函数会把检测到的失效链接的文字,增加删除线,并给它添加了一个类名为class=”broken-link”的span标签,方便给这些失效链接增加样式来提醒用户。
1、文章版权归作者所有,未经允许请勿转载。
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505