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

大部分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); // 子比内容解析过滤器
如果以上代码不符合你的主题未生效,可在下方帖子留言,寻求帮助~


没有回复内容