📜  评论 ajouter nofollow à un lien spécifique ou à tous les liens WordPress dans the_content - PHP (1)

📅  最后修改于: 2023-12-03 15:41:45.793000             🧑  作者: Mango

在 WordPress 中为特定链接或所有链接添加 nofollow 标签

在 WordPress 的 the_content 函数或任何其他文章或页面中你可能会利用链接来引导用户前往其他网站或网页。然而,在某些情况下,你可能想要将某些链接标记为 nofollow,以帮助控制搜索引擎对这些链接的评价,避免将其视为对那些网站的支持或推广。

在本文中,我们将介绍如何使用 PHP 代码添加 nofollow 标签。

为特定链接添加 nofollow

如果你只需要为特定链接添加 nofollow,你可以在链接的 HTML 代码中添加 rel="nofollow" 属性。这可以手动完成,但是如果你需要将其添加到许多链接,尤其是在一些自动生成链接的插件中,这将变得很麻烦。

在这种情况下,你可以使用 PHP 代码自动为你的链接添加 nofollow。具体来说,你可以使用 wp_rel_nofollow() 函数将链接转换为包含 nofollow 属性的 HTML 代码。

<?php
$link = 'https://example.com/';
echo wp_rel_nofollow($link);
?>

在上面的例子中,我们将链接 https://example.com/ 添加了 nofollow 属性,并将其存储在变量 $link 中。然后,我们通过 wp_rel_nofollow() 函数将链接转换为 <a> 标签的 HTML 代码,并将其输出到页面上。

为所有链接添加 nofollow

如果你需要将所有链接都设置为 nofollow,那么你可以使用 WordPress 中的 the_content 过滤器。the_content 过滤器在文章或页面的主要内容输出之前运行,因此我们可以使用它来修改所有链接的 HTML 代码。

具体来说,我们可以编写一个函数,该函数将获取文章或页面的内容,并替换其中所有链接的 HTML 代码以添加 nofollow 属性。然后,我们将该函数添加到 the_content 过滤器中,使其在文章或页面的 HTML 输出之前运行。

<?php
function add_nofollow_to_links($content) {
    $content = preg_replace_callback(
        '|<a .*?>|i',
        function($matches) {
            $href = $matches[0];
            if (strpos($href, 'rel=') === false) {
                $href = preg_replace('/(href=\S+)/', '$1 rel="nofollow"', $href);
            } elseif (preg_match('/rel=["\'](\S+)/', $href, $match)) {
                $rels = explode(' ', $match[1]);
                if (in_array('nofollow', $rels)) {
                    return $matches[0];
                }
                $href = str_replace($match[1], $match[1] . ' nofollow', $href);
            }
            return $href;
        },
        $content
    );
    return $content;
}
add_filter('the_content', 'add_nofollow_to_links');
?>

在上面的例子中,我们定义了一个名为 add_nofollow_to_links 的函数,该函数使用正则表达式搜索文章或页面的内容中所有链接的 HTML 代码,并根据需要为它们添加 nofollow 属性。

具体来说,我们使用 preg_replace_callback() 函数在 HTML 代码中搜索所有 <a> 标签,并对每个标签运行一个回调函数。在回调函数中,我们检查链接是否已经存在 rel 属性,如果没有,则添加 nofollow;否则,我们将 nofollow 添加到现有的 rel 属性中。

最后,我们将该函数添加到 the_content 过滤器中,以便它在每篇文章或页面的 HTML 输出之前自动运行。这种方法将为所有链接添加 nofollow 属性,并且是适用于大多数情况的最佳解决方案。

结论

在本文中,我们介绍了如何使用 PHP 代码为 WordPress 中的特定链接或所有链接添加 nofollow 属性。无论你需要的是为某些链接添加 nofollow 还是将其添加到所有链接中,上述方法都可以让你轻松完成任务。在添加 nofollow 标记时,请记住,该标记仅适用于搜索引擎,不会影响用户的访问或链接行为。