WordPress禁用pingback
- 发表于
- WordPress
pingback从功能上来说是好东西,可以让你知道有哪些站外引用了你的文章。但如果你的文章经常引用站内连接的话,就会造成很多Spam,下面提供关闭(禁用)pingback的方法:
WordPress设置pingback
其实后台有这个功能的设置,设置如下:
弊端:如果有新版本发布更新后, WordPress 会自动重置 Pingback 参数。
彻底禁用WordPress pingback
方法一,代码来自No Self Pings
插件
1 2 3 4 5 6 7 |
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' ); |
方法二,更简洁的写法
1 2 3 4 5 6 |
function deel_setup(){ //阻止站内PingBack if( dopt('d_pingback_b') ){ add_action('pre_ping','deel_noself_ping'); } } |
方法三,劫持 Pingback 功能的调用函数,完全屏蔽Pingback,代码来自Pingback Killer
插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
// Kill the rewrite rules add_filter( 'rewrite_rules_array', 'pmg_pk_filter_rewrites' ); function pmg_pk_filter_rewrites( $rules ) { foreach( $rules as $rule => $rewrite ) { if( preg_match( '/trackback/?$$/i', $rule ) ) { unset( $rules[$rule] ); } } return $rules; } // Kill bloginfo( 'pingback_url' ) add_filter( 'bloginfo_url', 'pmg_pk_kill_pingback_url', 10, 2 ); function pmg_pk_kill_pingback_url( $output, $show ) { if( $show == 'pingback_url' ) { $output = ''; } return $output; } // hijack options for pingbacks add_filter( 'pre_update_default_ping_status', '__return_false' ); add_filter( 'pre_option_default_ping_status', '__return_zero' ); add_filter( 'pre_update_default_pingback_flag', '__return_false' ); add_filter( 'pre_option_default_pingback_flag', '__return_zero' ); // Disable XMLRPC call add_action( 'xmlrpc_call', 'pmg_pk_kill_xmlrpc' ); function pmg_pk_kill_xmlrpc( $action ) { if( 'pingback.ping' === $action ) { wp_die( __( 'Pingbacks are not supported' ), __( 'Not Allowed!' ), array( 'response' => 403 ) ); } } // Flush rewrite rules on activation/deactivation so our trackback // rules disappear or reappear on deactivation. register_activation_hook( __FILE__ , 'flush_rewrite_rules' ); register_deactivation_hook( __FILE__, 'flush_rewrite_rules' ); |
如果之前有引用通知想清理怎么办?
1 |
UPDATE wp_posts SET ping_status='closed'; |
清理某个时间点
1 2 |
//把2016-03-08以前的文章指定ping_status的值为closed UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2016-03-08' |
WordPress pingback真的会被DDOS吗?
网上关于pingback的讨论,多数是在说此功能会被恶意DDOS,从功能上来说,它确实会被利用,但谁又会这么无聊呢?如果你确实担心,那可以采取下面两步操作来规避掉风险。
- 禁用WordPress pingback(看上面)
- 禁用WordPress xmlrpc服务(看下面)
扔进Functions.php里
1 2 |
//禁用xmlrpc add_filter('xmlrpc_enabled', '__return_false'); |
补充:禁用xmlrpc服务同时会影响到第三方客户端使用。
原文连接:WordPress禁用pingback
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。