Desativar links no header (feeds e tal)

Eu quero desativar feeds e coisas assim (rpc, pingbacks, wlmanifest, prev / next). A razão é que o site não é um blog, então estes não são úteis.

Eu escrevi o seguinte em um plugin:

remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'feed_links', 2); remove_action('wp_head', 'wlwmanifest_link'); // and so on... 

Na verdade, os links não estão mais no header. Mas se eu solicitar qualquer uma das URLs correspondentes, elas ainda funcionam. Acabei de remover os links, não a funcionalidade.

Encontrei uma dica no wpengineer e adicionei o seguinte ao meu plugin:

 function fb_disable_feed() { wp_die( __('No feed available!') ); } add_action('do_feed', 'fb_disable_feed', 1); add_action('do_feed_rdf', 'fb_disable_feed', 1); add_action('do_feed_rss', 'fb_disable_feed', 1); add_action('do_feed_rss2', 'fb_disable_feed', 1); add_action('do_feed_atom', 'fb_disable_feed', 1); 

Não parece funcionar (embora tenha visto muitas referências a esse código).

Alguma idéia sobre como eu poderia remover todos esses feeds, rpc e assim por diante? Ou, pelo menos, eles retornam algo como “Nada aqui”?

Notas:

  • Eu não quero editar arquivos do núcleo wp, é claro!

  • Eu acho que a área de administração usa feeds. Estou bem com isso, eu só quero que eles sejam removidos do front-end.

Solutions Collecting From Web of "Desativar links no header (feeds e tal)"

No template_redirect o template-loader.php entra em template-loader.php .

 add_action( 'template_redirect', function() { if ( in_array( true, array ( is_feed(), is_trackback(), is_embed(), ) ) ) { wp_die( __( "NO SOUP FOR YOU!" ) ); } } ); 

Se o do_feed() for chamado, algumas ações podem ser invocadas.

 add_action( 'init', function() { $feeds = array ( 'do_feed', 'do_feed_rdf', 'do_feed_rss', 'do_feed_rss2', 'do_feed_atom', ); foreach ( $feeds as $feed ) { remove_action( $feed, $feed ); } } ); 

As ações de feed acima e muitos outros são adicionados em default-filters.php

Para desativar xmlrpc :

 add_filter( 'xmlrpc_enabled', '__return_false' ); // Hide xmlrpc.php in HTTP response headers add_filter( 'wp_headers', function( $headers ) { unset( $headers[ 'X-Pingback' ] ); return $headers; } ); 

Para remover links:

 remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'rsd_link'); 

Para bloquear o access ao wlwmanifest e xmlrpc adicione estas linhas ao seu .htaccess :

 RedirectMatch 403 ^.*/xmlrpc.php$ RedirectMatch 403 ^.*/wp-includes/wlwmanifest.xml$ 

Para obter mais links para remover, você pode ver os links da API JSON no header html, que inclui links WP-API e oembed e Disable emojicons introduzidos com o WP 4.2 .