Desativar Pingback e Trackback - WordPress

Desativar trackback e pingback

Categoria

Geral, WordPress

Postado em

9 de novembro de 2019

Tempo de leitura

5 minutos

Visualizações

3524

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.

Não quer colocar a mão na massa? não tem problema, clique aqui e baixe o plugin… 🙂

Salve e ative ele em plugin.

Gostou? compartilhe nas redes!! ;)

Deixe seu comentário