非插件实现 WordPress 阻止站内文章互相 Pingback
在 WordPress 中,当您发布一篇包含其他文章链接的新文章时,系统会自动向这些链接发送 Pingback(引用通告)。如果这些链接指向您自己站内的文章,就会产生不必要的站内 Pingback,可能导致评论区域出现冗余通知或影响性能。通过添加一小段代码,我们可以阻止这种站内文章的互相 Pingback。
实现方法
将以下代码添加到您当前主题的 functions.php 文件末尾即可。建议在添加前备份该文件。
/**
* WordPress 阻止站内文章互相 Pingback
*/
function Bing_noself_pingback( &$links ) {
$url = get_bloginfo( 'url' );
foreach ( $links as $key => $value ) {
if ( strpos( $value, $url ) === 0 ) {
unset( $links[$key] );
}
}
}
add_action( 'pre_ping', 'Bing_noself_pingback' );
代码说明
- 函数作用:该函数挂钩到
pre_ping动作,在发送 Pingback 之前执行。 - 核心逻辑:获取当前网站的 URL,然后遍历所有待 Pingback 的链接。如果某个链接是以本站 URL 开头的(即指向站内),则将其从待发送列表中移除。
- 技术细节:使用
strpos( $value, $url ) === 0进行严格判断,确保只有当链接确实以本站 URL 开头时才被移除,避免了误判子字符串匹配的情况。
注意事项
- 此方法仅阻止从您自己网站发出的、指向自己站内文章的 Pingback,不影响来自其他网站的 Pingback 或 Trackback。
- 代码生效后,新发布的文章将不会对站内旧文章发送 Pingback,但已存在的历史 Pingback 记录不会被删除。
- 如果您更换了主题,需要将这段代码复制到新主题的
functions.php文件中以保持功能。
这是一种轻量级、无需依赖第三方插件的解决方案,有助于保持网站评论区域的整洁。