Desativar Pingback e Trackback - WordPress

Desativar trackback e pingback

Categoria

Geral, WordPress

Postado em

9 de novembro de 2019

Última Atualização

9 de novembro de 2019

Visualizações

337

Vejo muitos tutoriais por ai comentando sobre como desativar o Pingback e Trackback.

Mas notei que tem muitos tutoriais desatualizados, resolvi então buscar algumas alternativas atualizadas.

Vale apena lembrar que, alguns plugins utilizam essa função, abaixo algumas dicas de plugins e informações de outros, não desative o Pingback e Trackback se tiver usando alguns desses, pode ocasionar problemas:

  • WordPress Mobile App
  • JetPack LibSyn (para podcasts)
  • Algumas partes do BuddyPress
  • Windows Live Writer
  • IFTTT
  • Alguns plugins de categorias

Tem vários outros, o importante antes de instalar é sempre verificar se não é obrigatório estar ativo o Pingback e Trackback XML-RPC.

Bom, sem delongas, segue abaixo o código em forma de plugin:

<?php
/*
Plugin Name:        Adeus Pingback 😉
Plugin URI:         https://pointcomunicacao.ppg.br/plugins
Description:        Que tal remover o Pingback e Trackback?....
Version:            1.0.0
Author:             Point Comunicação
Author URI:         https://pointcomunicacao.ppg.br
*/
// Se esse arquivo for chamado diretamente, aborte.
if ( ! defined( 'WPINC' ) ) {
die;
}
add_filter('mod_rewrite_rules', 'pointcom_mod_rewrite_rules'); // devemos colocar isso dentro do wp_loaded ou do hook de ativação
function pointcom_mod_rewrite_rules($rules) {
$insert = "RewriteRule xmlrpc\.php$ - [F,L]";
$rules = preg_replace('!RewriteRule!', "$insert\n\nRewriteRule", $rules, 1);
return $rules;
}
register_activation_hook(__FILE__, 'pointcom_htaccess_activate');
function pointcom_htaccess_activate() {
flush_rewrite_rules(true);
}
register_deactivation_hook(__FILE__, 'pointcom_htaccess_deactivate');
function pointcom_htaccess_deactivate() {
remove_filter('mod_rewrite_rules', 'pointcom_mod_rewrite_rules');
flush_rewrite_rules(true);
}
// Remova o rsd_link dos filtros - link rel="EditURI"
add_action('wp', function(){
remove_action('wp_head', 'rsd_link');
}, 9);
// Remover pingback do head (link rel="pingback")
if (!is_admin()) {      
function link_rel_buffer_callback($buffer) {
$buffer = preg_replace('/(<link.*?rel=("|\')pingback("|\').*?href=("|\')(.*?)("|\')(.*?)?\/?>|<link.*?href=("|\')(.*?)("|\').*?rel=("|\')pingback("|\')(.*?)?\/?>)/i', '', $buffer);
return $buffer;
}
function link_rel_buffer_start() {
ob_start("link_rel_buffer_callback");
}
function link_rel_buffer_end() {
ob_flush();
}
add_action('template_redirect', 'link_rel_buffer_start', -1);
add_action('get_header', 'link_rel_buffer_start');
add_action('wp_head', 'link_rel_buffer_end', 999);
}
// Retorne o pingback_url vazio (<link rel="pingback" href>).
add_filter('bloginfo_url', function($output, $property){
return ($property == 'pingback_url') ? null : $output;
}, 11, 2);
// Desabilitar xmlrcp/pingback
add_filter( 'xmlrpc_enabled', '__return_false' );
add_filter( 'pre_update_option_enable_xmlrpc', '__return_false' );
add_filter( 'pre_option_enable_xmlrpc', '__return_zero' );
// Desabilitar trackbacks
add_filter( 'rewrite_rules_array', function( $rules ) {
foreach( $rules as $rule => $rewrite ) {
if( preg_match( '/trackback\/\?\$$/i', $rule ) ) {
unset( $rules[$rule] );
}
}
return $rules;
});
// Desative o cabeçalho HTTP X-Pingback.
add_filter('wp_headers', function($headers, $wp_query){
if(isset($headers['X-Pingback'])){
unset($headers['X-Pingback']);
}
return $headers;
}, 11, 2);
add_filter( 'xmlrpc_methods', function($methods){
unset( $methods['pingback.ping'] );
unset( $methods['pingback.extensions.getPingbacks'] );
unset( $methods['wp.getUsersBlogs'] ); //Bloquear descoberta de força bruta de usuários existentes
unset( $methods['system.multicall'] );
unset( $methods['system.listMethods'] );
unset( $methods['system.getCapabilities'] );
return $methods;
});
// Apenas desabilite a funcionalidade pingback.ping enquanto deixa XMLRPC intacto?
add_action('xmlrpc_call', function($method){
if($method != 'pingback.ping') return;
wp_die(
'Este site não possui pingback.',
'Pingback não ativado!',
array('response' => 403)
);
});

Além disso, se você deseja fechar todos os pingbacks existentes, siga estas etapas:

1) Abra phpmyadmin e navegue até a seção SQL:

Desativar Pingback e Trackback - WordPress

2) Digite o seguinte:

UPDATE wp_posts SET ping_status="closed";

3) Todos os pingbacks existentes devem agora ser encerrados.

 

Não sabe como criar um plugin?

Vamos lá,

acesse wp-content > plugins crie uma pasta com qualquer nome, por exemplo (desabilitar-trackback) dentro dela crie um arquivo .php com o mesmo nome da pasta (desabilitar-trackback.php) e coloque esse código no arquivo.

Salve e ative ele em plugin.

Gostou? compartilhe nas redes!! ;)

Deixe seu comentário