Cum să elimini complet feed-urile din WordPress?

7 nov. 2011, 11:42:38
Vizualizări: 19.5K
Voturi: 10

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?

3
Comentarii

și tone de rescriere pentru feed-uri de asemenea.. sunt peste tot!

Ünsal Korkmaz Ünsal Korkmaz
7 nov. 2011 11:44:51

sunt curios, dacă nu te deranjează să întreb... de ce vrei să elimini feed-urile din WordPress?

Nicole Nicole
7 nov. 2011 16:15:57

de ce aș avea nevoie de feed-uri în WordPress dacă nu îl folosesc pentru blogging?

Ünsal Korkmaz Ünsal Korkmaz
7 nov. 2011 19:13:38
Toate răspunsurile la întrebare 3
1
18

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.

28 mar. 2012 07:37:44
Comentarii

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').

Jake Jake
28 aug. 2013 05:37:23
0

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 ...

27 apr. 2012 18:17:45
1

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.

28 mar. 2012 03:41:46
Comentarii

Și mai scurt în versiunile mai recente de WordPress: add_filter('post_comments_feed_link', '__return_false'); dar acest lucru ascunde doar un singur link către feed-ul de comentarii. Ratează... multe pentru a spune puțin...

Jake Jake
28 aug. 2013 05:30:55