WordPress让文章中的链接都在新窗口打开代码实现

操作步骤

将以下代码复制到自主题的 functions.php文件最底部,注意代码规范,否则可能导致网站无法访问。

d2b5ca33bd20260107185707

 

大部分WordPress主题通用的代码

并且代码做了详细的注释,方便大家修改和理解

/**
A8源码原创--www.a8ymw.com
 * 为文章内容中的链接添加新窗口打开属性(仅添加target,无rel属性)
 */
function open_links_in_new_tab($content) {
    // 只在前台文章内容中生效,排除后台编辑页面
    if (is_admin()) {
        return $content;
    }
    
    // 正则匹配链接并添加 target 属性
    $content = preg_replace_callback(
        '/<a\s+([^>]*?)>/i',
        function($matches) {
            $attributes = $matches[1];
            
            // 如果已有 target 属性,跳过
            if (preg_match('/target\s*=\s*["\'][^"\']+["\']/i', $attributes)) {
                return '<a ' . $attributes . '>';
            }
            
            // 仅添加 target="_blank",不添加rel属性
            $attributes .= ' target="_blank"';
            
            return '<a ' . $attributes . '>';
        },
        $content
    );
    
    return $content;
}
add_filter('the_content', 'open_links_in_new_tab');

如果你使用的是子比主题可用下面的代码

/**
 * 子比主题专用 - 文章链接新窗口打开
 * 适配Zibll主题的内容结构和渲染逻辑
 * A8源码网原创 www.a8ymw.com
 */
function zibll_open_links_in_new_tab($content) {
    // 仅前台生效,排除后台编辑
    if (is_admin()) return $content;
    
    // 子比主题文章内容可能是短代码渲染,延迟处理 + 精准匹配
    if (preg_match('/<a\s+href=/i', $content)) {
        // 第一步:移除已有的target属性(避免重复)
        $content = preg_replace('/\s+target=["\'].*?["\']/i', '', $content);
        // 第二步:为所有a标签添加target="_blank"
        $content = preg_replace('/<a\s+/i', '<a target="_blank" ', $content);
    }
    
    return $content;
}
// 子比主题可能用了自定义过滤器,同时绑定多个确保覆盖
add_filter('the_content', 'zibll_open_links_in_new_tab', 999); // 提高优先级
add_filter('zib_the_content', 'zibll_open_links_in_new_tab', 999); // 子比主题自定义过滤器
add_filter('zib_parse_content', 'zibll_open_links_in_new_tab', 999); // 子比内容解析过滤器

如果以上代码不符合你的主题未生效,可在下方帖子留言,寻求帮助~

请登录后发表评论

    没有回复内容