WordPress去除文章失效链接的教程

网站运行的时间长了,里面引用的一些链接可能就会已经失效了,甚至是跳转到一些打不开的网站,这个时候无论是打不开还是链接打开后和文章引用时候说的不一样,都是对用户非常不好的体验,所以我们就需要把这些失效链接删除,下面我就来分享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标签,方便给这些失效链接增加样式来提醒用户。

👋 感谢您的观看!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享