如何将某个域名的所有外部链接设置为“NOFLOG”?

时间:2017-01-28 作者:Patrick Dreid

我正在搜索一个代码或更好的wordpress插件,以自动将仅指向某个域(当然还有其所有子页面)的所有链接设置为“nofollow”。

我找不到任何插件可以做到这一点,也许你知道一个或一个编码解决方案(我猜是javascript)。

F、 e.我发现的插件及其问题:

https://wordpress.org/plugins/nofollow/ 只有“单个blogroll链接的nofollow选项”->,因此不可能只将某个域设置为nofollow,这是普通文章的一部分

https://wordpress.org/plugins/nofollow-links/ 同样,在blogroll中只有一般的nofollow域(或者文章中的普通链接?在我的理解中,blogroll是侧边栏上的链接列表)

wordpress。org/plugins/nofollow所有外部链接只能为所有外部链接提供nofollow,而不能仅为特定域提供nofollow

等等有谁的插件允许我只设置某个域及其子页面为nofollow?

2 个回复
最合适的回答,由SO网友:JMau 整理而成

假设你的目标是帖子内容中的链接,我会这样说:

add_filter( \'the_content\', \'wpse_254317_nofollow\' );
/**
 * Add rel nofollow according to a predefined domain
 * to links in content
 * @param $content
 * @link http://stackoverflow.com/a/4809181/1930236
 * @return mixed
 */
function wpse_254317_nofollow( $content ) {

    $my_folder = "https://google.com";
    preg_match_all( \'~<a.*>~isU\', $content, $matches );

    for ( $i = 0; $i <= sizeof( $matches[0] ); $i ++ ) {
        if ( isset( $matches[0][ $i ] ) && ! preg_match( \'~nofollow~is\', $matches[0][ $i ] )
             && ( preg_match( \'~\' . preg_quote( $my_folder ) . \'~\', $matches[0][ $i ] )
                  || ! preg_match( \'~\' . get_bloginfo( \'url\' ) . \'~\', $matches[0][ $i ] ) )
        ) {
            $result = trim( $matches[0][ $i ], ">" );
            $result .= \' rel="nofollow">\';
            $content = str_replace( $matches[0][ $i ], $result, $content );
        }
    }

    return $content;
}
代码匹配帖子内容中的所有链接,并为设置为$my\\u文件夹的域添加所需的rel,该文件夹为“https://google.com“在我的例子中。

SO网友:Patrick Dreid

非常感谢。我很惊讶有这么多解决方案。这里的另一位用户编写了以下代码(包括自动打开每个外部链接):

将此代码放入主题函数中。php文件:

function cdx_handel_external_links() {
    ?>
<script type="text/javascript">
( function( $ ) {

    $("a[href^=http]").click(function(){
      if(this.href.indexOf(location.hostname) == -1) {
         $(this).attr({
            target: "_blank"
         });
      }
    })

   //Add Nofollow
   $("a").each(function(){
    if(this.href.indexOf(\'EXAMPLEDOMAIN.com\') >0 ){
        $(this).attr({
            rel: "nofollow"
         });
    }
   });

} )( jQuery );
</script>
   <?php
}
add_filter( \'wp_footer\', \'cdx_handel_external_links\', 999);

相关推荐

更改wp-admin/plugins.php上统计的插件数量

我已成功地使用从插件页面隐藏我的插件$wp_list_table 然而,顶部的分页仍然将插件列为“所有(3)”等。我成功地改变了$wp_list_table 的数组_pagination_args = total_items.但它仍然在页面顶部呈现插件-“全部(3)”。有什么办法可以解决这个问题吗?我找到了WP_Plugins_List_Table::prepare_items()具有全局$totals 变量,但我不确定我将如何改变这一点,在这个函数中$totals = array(); fore