Use esses códigos para limpar wordpress header e assim trazer maior segurança e performance para o wordpress.

Basta utilizar o plugin Code Snippets já recomendado no blog e adiconar os códigos abaixo.

Isso pode ajudar a melhorar a velocidade de carregamento da página, reduzir o tamanho do cabeçalho e tornar o site mais limpo e organizado.

Todos códigos:

// Remove shortlinks.
remove_action( 'wp_head', 'wp_shortlink_wp_head' );
remove_action( 'template_redirect', 'wp_shortlink_header', 11 );

// Remove REST API links.
remove_action( 'wp_head', 'rest_output_link_wp_head' );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );

// Remove RSD and WLW Manifest links.
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
remove_action( 'wp_head', 'wlwmanifest_link' );

// Disable XML-RPC
add_filter('xmlrpc_enabled', '__return_false');

// Disable XML-RPC link
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);
}
// Alternatively use this to just remove the url or use it together with the above
add_filter('bloginfo_url', function($output, $property){
    return ($property == 'pingback_url') ? null : $output;
}, 11, 2);
add_action('wp', function(){
    remove_action('wp_head', 'rsd_link');
}, 11);
//Removes X-Pingback headers.
function remove_pingback_header() {
    header_remove( 'X-Pingback' );
}
add_action( 'send_headers', 'remove_pingback_header' );

function mmx_remove_xmlrpc_methods( $methods ) {
	unset( $methods['system.multicall'] );
	return $methods;
}
add_filter( 'xmlrpc_methods', 'mmx_remove_xmlrpc_methods');

// remove WP version.
remove_action( 'wp_head', 'wp_generator' );

// Remove Admin bar
add_filter('show_admin_bar', '__return_false');

// Remove JSON+XML oEmbed links.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

// Disable Embed
function my_deregister_scripts(){
 wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );

// Turn off oEmbed auto discovery.
add_filter( 'embed_oembed_discover', '__return_false' ); 

//Don't filter oEmbed results.
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10); 

//Remove oEmbed discovery links.
remove_action('wp_head', 'wp_oembed_add_discovery_links'); 

//Remove oEmbed JavaScript from the front-end and back-end.
remove_action('wp_head', 'wp_oembed_add_host_js');

// Remove emoji script
function disable_emojis() {
 remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
 remove_action( 'wp_print_styles', 'print_emoji_styles' );
 remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
 remove_action( 'admin_print_styles', 'print_emoji_styles' ); 
 remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
 remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); 
 remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
}
add_action( 'init', 'disable_emojis' );

//Removes X-Powered-By headers.
function remove_powered_by_header() {
    header_remove( 'X-Powered-By' );
}
add_action( 'send_headers', 'remove_powered_by_header' );

// Remove Query String from Static Resources
function _remove_script_version( $src ){
$parts = explode( '?ver', $src );
return $parts[0];
}
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );

// remova classic theme
function disable_classic_theme_styles() {
    wp_deregister_style('classic-theme-styles');
    wp_dequeue_style('classic-theme-styles');
}
add_filter('wp_enqueue_scripts', 'disable_classic_theme_styles', 100);

// Remove Feed links from head
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );

// Disable feeds
function itsme_disable_feed() {
 wp_die( __( 'No feed available, please visit the <a href="'. esc_url( home_url( '/' ) ) .'">homepage</a>!' ) );
}

//add_action('do_feed', 'itsme_disable_feed', 1);
add_action('do_feed_rdf', 'itsme_disable_feed', 1);
add_action('do_feed_rss', 'itsme_disable_feed', 1);
add_action('do_feed_rss2', 'itsme_disable_feed', 1);
add_action('do_feed_atom', 'itsme_disable_feed', 1);
add_action('do_feed_rss2_comments', 'itsme_disable_feed', 1);
add_action('do_feed_atom_comments', 'itsme_disable_feed', 1);

Um “shortlink” é um URL curto que aponta para a mesma página original.

Esses links encurtados podem ser úteis para compartilhar em redes sociais ou em outras plataformas com limitações de espaço, mas também podem ser desnecessários.

<link rel='shortlink' href='https://seusite.com/?p=1241' />

Para remover shortlinks, adicione o código abaixo utilizando o plugin Code Snippets:

// Remove shortlinks.
remove_action( 'wp_head', 'wp_shortlink_wp_head' );
remove_action( 'template_redirect', 'wp_shortlink_header', 11 );

API Rest

A API REST do WordPress é usada para que aplicativos externos possam se comunicar com o WordPress e acessar seus recursos, como postagens, páginas, comentários, etc, aparecem como /wp-json/

<link rel="https://api.w.org/" href="https://seusite.com/wp-json/" />
<link rel="alternate" type="application/json" href="https://seusite.com/wp-json/wp/v2/posts/1241" />

Para remover REST API links, adicione o código abaixo utilizando o plugin Code Snippets:

// Remove REST API links.
remove_action( 'wp_head', 'rest_output_link_wp_head' );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );

RSD e WLW

O RSD é um protocolo que permite que os serviços da Web descubram os recursos de publicação em um site.

O WLW Manifest é um arquivo XML que fornece informações sobre o site para o Windows Live Writer, um aplicativo de desktop usado para escrever e publicar conteúdo em blogs.

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://seusite.com/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://seusite.com/wp-includes/wlwmanifest.xml" />

Para remover RSD e WLW Manifest, adicione o código abaixo utilizando o plugin Code Snippets:

// Remove RSD and WLW Manifest links.
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
remove_action( 'wp_head', 'wlwmanifest_link' );

oEmbed

O oEmbed é um formato de compartilhamento de conteúdo que permite que um site incorporado (como um vídeo do YouTube ou uma postagem do Instagram) seja exibido em outro site, sem a necessidade de códigos embed ou iFrames.

O WordPress suporta oEmbed e adiciona automaticamente links de descoberta do oEmbed JSON+XML ao cabeçalho da página.

<link rel="alternate" type="application/json+oembed" href="https://seusite.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fseusite.com%2Ftemplate-sticky%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://seusite.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fseusite.com%2Ftemplate-sticky%2F&format=xml" />

Para remover oEmbed JSON+XML, adicione o código abaixo utilizando o plugin Code Snippets:

// Remove JSON+XML oEmbed links.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

// Disable Embed
function my_deregister_scripts(){
 wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );

// Turn off oEmbed auto discovery.
add_filter( 'embed_oembed_discover', '__return_false' ); 

//Don't filter oEmbed results.
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10); 

//Remove oEmbed discovery links.
remove_action('wp_head', 'wp_oembed_add_discovery_links'); 

//Remove oEmbed JavaScript from the front-end and back-end.
remove_action('wp_head', 'wp_oembed_add_host_js');

XML-RPC

O protocolo XML-RPC, que é uma interface remota que permite que aplicativos externos se comuniquem com o WordPress.

Ex: O XML-RPC é usado pelo aplicativo WordPress para iOS, para criar e atualizar postagens e páginas, entre outras coisas.

No entanto, também pode ser usado por atacantes para tentar invadir o site, explorando vulnerabilidades de segurança no protocolo.

<link rel="pingback" href="https://supertutorial.local/xmlrpc.php">

Para desativar o XML-RPC, adicione o código abaixo utilizando o plugin Code Snippets:

// Disable XML-RPC
add_filter('xmlrpc_enabled', '__return_false');

// Disable XML-RPC link
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);
}
// Alternatively use this to just remove the url or use it together with the above
add_filter('bloginfo_url', function($output, $property){
    return ($property == 'pingback_url') ? null : $output;
}, 11, 2);
add_action('wp', function(){
    remove_action('wp_head', 'rsd_link');
}, 11);

//Removes X-Pingback headers.
function remove_pingback_header() {
    header_remove( 'X-Pingback' );
}
add_action( 'send_headers', 'remove_pingback_header' );

function mmx_remove_xmlrpc_methods( $methods ) {
	unset( $methods['system.multicall'] );
	return $methods;
}
add_filter( 'xmlrpc_methods', 'mmx_remove_xmlrpc_methods');

Versão do WP

Ao remover essa ação, o WordPress não adicionará mais a informação da versão do WordPress no cabeçalho da página.

Isso pode ser útil em casos em que a exposição dessa informação pode ser considerada um risco de segurança, pois pode ajudar um atacante a identificar a versão do WordPress e explorar possíveis vulnerabilidades conhecidas.

Além disso, a remoção dessa informação pode ajudar a reduzir a superfície de ataque do site.

<meta name="generator" content="WordPress 6.2.2" />

Para desativar a versão do WP, adicione o código abaixo utilizando o plugin Code Snippets:

// remove WP version.
remove_action( 'wp_head', 'wp_generator' );

Barra de administração

Ao remover a barra de administração, o site pode se tornar mais limpo e menos confuso para os usuários que não têm as permissões de administrador.

Além disso, em alguns casos, pode ser útil para fins de design ou para ocultar informações de administração do público em geral.

No entanto, é importante lembrar que a remoção da barra de administração pode dificultar o acesso do administrador às ferramentas de administração do WordPress.

<link rel='stylesheet' id='admin-bar-css' href='https://seusite.com/wp-includes/css/admin-bar.min.css?ver=6.2.2' media='all' />
<script src='https://seusite.com/wp-includes/js/admin-bar.min.js?ver=6.2.2' id='admin-bar-js'></script>

Para desativar a admin bar, adicione o código abaixo utilizando o plugin Code Snippets:

// Remove Admin bar
add_filter('show_admin_bar', '__return_false');

Emojis

Ao remover a funcionalidade de emojis, o site pode se tornar mais leve e rápido, pois não precisará carregar os scripts e estilos relacionados aos emojis.

<script>
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/supertutorial.local\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.2.2"}};
/*! This file is auto-generated */
!function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){p.clearRect(0,0,i.width,i.height),p.fillText(e,0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(t,0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(p&&p.fillText)switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s("\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!s("\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!s("\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!s("\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udfff","\ud83e\udef1\ud83c\udffb\u200b\ud83e\udef2\ud83c\udfff")}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(e=t.source||{}).concatemoji?c(e.concatemoji):e.wpemoji&&e.twemoji&&(c(e.twemoji),c(e.wpemoji)))}(window,document,window._wpemojiSettings);
</script>
<style>
img.wp-smiley,
img.emoji {
	display: inline !important;
	border: none !important;
	box-shadow: none !important;
	height: 1em !important;
	width: 1em !important;
	margin: 0 0.07em !important;
	vertical-align: -0.1em !important;
	background: none !important;
	padding: 0 !important;
}
</style>

Para desativar os emojis, adicione o código abaixo utilizando o plugin Code Snippets:

// Remove emoji script
function disable_emojis() {
 remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
 remove_action( 'wp_print_styles', 'print_emoji_styles' );
 remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
 remove_action( 'admin_print_styles', 'print_emoji_styles' ); 
 remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
 remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); 
 remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
}
add_action( 'init', 'disable_emojis' );

X-Powered-By

O cabeçalho X-Powered-By é um cabeçalho HTTP que informa qual tecnologia ou plataforma está sendo usada para executar o site.

No WordPress, o cabeçalho X-Powered-By é adicionado automaticamente com o valor “PHP/version”, informando a versão do PHP que está sendo usada para executar o WordPress.

x-powered-by: PHP/8.1.9

Para desativar o X-Powered-By, adicione o código abaixo utilizando o plugin Code Snippets:

//Removes X-Powered-By headers.
function remove_powered_by_header() {
    header_remove( 'X-Powered-By' );
}
add_action( 'send_headers', 'remove_powered_by_header' );

Query String

Quando um script ou folha de estilo é carregado em um site WordPress, o WordPress adiciona automaticamente uma versão de consulta (query string) ao final do URL do recurso.

Essa versão de consulta é usada para garantir que o navegador baixe a versão mais recente do recurso, em vez de usar uma versão em cache.

<link rel='stylesheet' id='wp-block-library-css' href='https://seusite.com/wp-includes/css/dist/block-library/style.min.css?ver=6.2.2' media='all' />
<link rel='stylesheet' id='classic-theme-styles-css' href='https://seusite.com/wp-includes/css/classic-themes.min.css?ver=6.2.2' media='all' />

Para desativar o query string, adicione o código abaixo utilizando o plugin Code Snippets:

// Remove Query String from Static Resources
function _remove_script_version( $src ){
$parts = explode( '?ver', $src );
return $parts[0];
}
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );

Classic Theme

O tema clássico é um tema padrão antigo do WordPress que pode estar presente em algumas instalações do WordPress.

O tema clássico pode ter estilos CSS que não são mais usados em temas modernos do WordPress e, portanto, podem ser desnecessários e aumentar o tempo de carregamento da página.

<link rel='stylesheet' id='classic-theme-styles-css' href='https://seusite.com/wp-includes/css/classic-themes.min.css' media='all' />

Para desativar o classic theme, adicione o código abaixo utilizando o plugin Code Snippets:

// remova classic theme
function disable_classic_theme_styles() {
    wp_deregister_style('classic-theme-styles');
    wp_dequeue_style('classic-theme-styles');
}
add_filter('wp_enqueue_scripts', 'disable_classic_theme_styles', 100);

Remover feed

Esse código é usado em um site WordPress para remover os links de feed do cabeçalho da página e para exibir uma mensagem personalizada quando alguém tentar acessar os feeds.

<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="alternate" type="application/rss+xml" title="Feed para supertutorial »" href="https://seusite.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="Feed de comentários para supertutorial »" href="https://seusite.com/comments/feed/" />
<link rel="alternate" type="application/rss+xml" title="Feed de comentários para supertutorial » WP 6.1 Font size scale" href="https://seusite.com/wp-6-1-font-size-scale/feed/" />

Para desativar os feeds, adicione o código abaixo utilizando o plugin Code Snippets:

// Remove Feed links from head
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );

// Disable feeds
function itsme_disable_feed() {
 wp_die( __( 'No feed available, please visit the <a href="'. esc_url( home_url( '/' ) ) .'">homepage</a>!' ) );
}

//add_action('do_feed', 'itsme_disable_feed', 1);
add_action('do_feed_rdf', 'itsme_disable_feed', 1);
add_action('do_feed_rss', 'itsme_disable_feed', 1);
add_action('do_feed_rss2', 'itsme_disable_feed', 1);
add_action('do_feed_atom', 'itsme_disable_feed', 1);
add_action('do_feed_rss2_comments', 'itsme_disable_feed', 1);
add_action('do_feed_atom_comments', 'itsme_disable_feed', 1);

É recomendado implementar os códigos separadamente para que no caso de algum erro seja mais simples e rápido retornar ao padrão.

Com todos esses códigos ao tentar encontrar vulnerabilidades com o WPSCAN, a ferramenta diz que o site não é feito com wordpress, o que é excelente do ponto de vista de segurança.