WordPress禁用pingback
- 发表于
- WordPress
pingback从功能上来说是好东西,可以让你知道有哪些站外引用了你的文章。但如果你的文章经常引用站内连接的话,就会造成很多Spam,下面提供关闭(禁用)pingback的方法:
WordPress设置pingback
其实后台有这个功能的设置,设置如下:
弊端:如果有新版本发布更新后, WordPress 会自动重置 Pingback 参数。
彻底禁用WordPress pingback
方法一,代码来自No Self Pings
插件
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' );
方法二,更简洁的写法
function deel_setup(){ //阻止站内PingBack if( dopt('d_pingback_b') ){ add_action('pre_ping','deel_noself_ping'); } }
方法三,劫持 Pingback 功能的调用函数,完全屏蔽Pingback,代码来自Pingback Killer
插件
// 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' );
如果之前有引用通知想清理怎么办?
UPDATE wp_posts SET ping_status='closed';
清理某个时间点
//把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里
//禁用xmlrpc add_filter('xmlrpc_enabled', '__return_false');
补充:禁用xmlrpc服务同时会影响到第三方客户端使用。
原文连接:WordPress禁用pingback
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。