使用WordPress建站的朋友都知道,如果你在撰写文章时添加了另一篇WordPress文章的链接,那么发布文章后就会向那篇被链接的文章发送一条Pingback引用通告,这对于两个WordPress站点的互动和交流还是很有好处的。但是WordPress默认也会向站内链接发送Pingback引用通告,如果自己站内的某篇文章被多次链接,那么那篇文章收到的Pingback引用通告就会很多。
有图有真相,下面你可以看一下三好公民自己站内的某篇文章收到的Pingback引用通告数量,很恐怖哦!如图:

而对于站内文章来说,获得这么多的Pingback引用通告不但无益,还有一定的害处,例如导致数据库庞大、不利于SEO等。所以,我们最好是禁止WordPress向站内链接发送PingBack引用通告,而对于站外链接则照发不误。实现方法如下:
在当前WordPress主题的functions.php中添加如下代码:
|
|
<span style="color: #000000; font-weight: bold;">function</span> no_self_ping<span style="color: #009900;">(</span> <span style="color: #339933;">&</span><span style="color: #000088;">$links</span> <span style="color: #009900;">)</span> <span style="color: #009900;">{</span> <span style="color: #000088;">$home</span> <span style="color: #339933;">=</span> get_option<span style="color: #009900;">(</span> <span style="color: #0000ff;">'home'</span> <span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">(</span> <span style="color: #000088;">$links</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$l</span> <span style="color: #339933;">=></span> <span style="color: #000088;">$link</span> <span style="color: #009900;">)</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">===</span> <span style="color: #990000;">strpos</span><span style="color: #009900;">(</span> <span style="color: #000088;">$link</span><span style="color: #339933;">,</span> <span style="color: #000088;">$home</span> <span style="color: #009900;">)</span> <span style="color: #009900;">)</span> <span style="color: #990000;">unset</span><span style="color: #009900;">(</span><span style="color: #000088;">$links</span><span style="color: #009900;">[</span><span style="color: #000088;">$l</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #009900;">}</span> add_action<span style="color: #009900;">(</span> <span style="color: #0000ff;">'pre_ping'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'no_self_ping'</span> <span style="color: #009900;">)</span><span style="color: #339933;">;</span> |
|
function no_self_ping( &$links ) {
$home = get_option( ‘home’ );
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, $home ) ) unset($links[$l]);
}
add_action( ‘pre_ping’, ‘no_self_ping’ );
其实以上代码就是提取自 No Self Pings 插件,没必要因为这个需求再专门安装个插件。
另外,如果你要删除之前已经产生的Pingback,则可以在数据库中运行如下命令:
|
|
<span style="color: #990099; font-weight: bold;">UPDATE</span> wp_posts <span style="color: #990099; font-weight: bold;">SET</span> ping_status<span style="color: #CC0099;">=</span><span style="color: #008000;">'closed'</span><span style="color: #000033;">;</span> |
|
UPDATE wp_posts SET ping_status=’closed’;
注意修改上面的 wp_posts 的前缀 wp_ 为你的数据库表前缀哦!
但是这个命令也会把所有的来自站外的Pingback引用通告也删除掉,所以也在这里求一条能够只删除来自站内的Pingback引用通告的命令,希望知道的朋友能够在评论中分享一下,非常感谢!
请先
!