Cum să elimini complet feed-urile din WordPress?
Vreau să elimin complet feed-urile din WordPress. Folosesc această mică funcție de pe http://wpengineer.com/287/disable-wordpress-feed/
/**
* dezactivează feed-ul
*/
function fb_disable_feed() {
wp_die( __('Nu există feed disponibil, vizitează-ne <a href="'. get_bloginfo('url') .'">pagina principală</a>!') );
}
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);
Totuși, există o mulțime de opțiuni temporare.. precum _transient_feed_mod
sau _transient_timeout_feed_mod
Cum pot elimina complet feed-urile din WordPress?

Primul pas: elimină legăturile de feed din secțiunea <head>
a site-ului tău.
<?php
add_action( 'wp_head', 'wpse33072_wp_head', 1 );
/**
* Elimină legăturile de feed din wp_head
*/
function wpse33072_wp_head()
{
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
}
Următorul pas, să eliminăm endpoint-urile de feed din WP. Conectează-te la init
, globalizează $wp_rewrite
, apoi setează feed-urile la un array gol. Acest lucru oprește efectiv WordPress să adauge rescrieri de feed. Este, de asemenea, foarte hackish și probabil se va strica în viitor.
<?php
add_action( 'init', 'wpse33072_kill_feed_endpoint', 99 );
/**
* Elimină endpoint-ul `feed`
*/
function wpse33072_kill_feed_endpoint()
{
// Acest lucru este extrem de fragil.
// $wp_rewrite->feeds este public acum, dar versiunile viitoare ale WP
// ar putea schimba asta
global $wp_rewrite;
$wp_rewrite->feeds = array();
}
Dar, dacă se strica, este în regulă, pentru că vom redirecționa feed-urile către pagina principală.
<?php
foreach( array( 'rdf', 'rss', 'rss2', 'atom' ) as $feed )
{
add_action( 'do_feed_' . $feed, 'wpse33072_remove_feeds', 1 );
}
unset( $feed );
/**
* Previne acțiunile să se declanșeze pe feed-uri când funcția `do_feed` este
* apelată
*/
function wpse33072_remove_feeds()
{
// redirecționează feed-urile! nu doar le oprește
wp_redirect( home_url(), 302 );
exit();
}
Și ultimul pas: un hook de activare pentru a seta rescrierile noastre de feed la un array gol și a reîmprospăta regulile de rescriere.
<?php
register_activation_hook( __FILE__, 'wpse33072_activation' );
/**
* Hook de activare
*/
function wpse33072_activation()
{
wpse33072_kill_feed_endpoint();
flush_rewrite_rules();
}
Toate acestea ca un plugin.

Lucruri utile. Mulțumesc! Am adăugat câteva fluxuri în matricea ta. Știu că există aceste două pentru comentarii: 'do_feed_rss2_comments', 'do_feed_atom_comments'. Cred că ai nevoie și de 'do_feed'. Am actualizat astfel: add_action( 'do_feed' . ($feed ? '_' . $feed : ''), 'wpse33072_remove_feeds', 1 );
și matricea: array('', 'rdf', 'rss', 'rss2', 'atom', 'rss2_comments', 'atom_comments')
.

Codul pe care l-ai postat va face exact ce spune că va face - va împiedica accesul la site prin fluxul RSS.
Totuși există o mulțime de opțiuni tranzitorii.. cum ar fi
_transient_feed_mod
sau_transient_timeout_feed_mod
Aceste opțiuni tranzitorii nu au absolut nicio legătură cu fluxul site-ului tău. Tabloul de bord WordPress consumă mai multe fluxuri în mod implicit și le afișează în cutii pe panoul de administrare. Pluginurile pe care le instalezi pot adăuga propriile fluxuri, fie pentru afișarea de știri, fie pentru actualizări.
Aceste valori tranzitorii sunt folosite de WordPress pentru a determina când aceste fluxuri consumate au fost actualizate.
Cum pot elimina complet fluxurile din WordPress?
Codul pe care l-ai postat deja are ...

Acesta ar trebui să funcționeze
/*dezactivează rss*/
remove_action('wp_head', 'feed_links', 2 );
add_filter('post_comments_feed_link','bfr_disable_comments_feeds');
function bfr_disable_comments_feeds() {
return null;
}
Și mai bine, dacă ai cel puțin PHP 5.3 poți folosi o versiune mai scurtă:
/*dezactivează rss, PHP 5.3+ */
remove_action('wp_head', 'feed_links', 2 );
add_filter('post_comments_feed_link',function () { return null;});
Pe de altă parte, eliminarea rewrite-urilor ar dura mult mai mult, așa că dacă nu ești complet obsedat de performanță, le poți lăsa așa.
