web-dev-qa-db-fra.com

Désactiver les liens dans l'en-tête (flux et autres)

Je veux désactiver les flux et autres choses du même genre (rpc, pingbacks, wlwmanifest, prev/next). La raison en est que le site Web n'est pas un blog, ils ne sont donc d'aucune utilité.

J'ai écrit ce qui suit dans un plugin:

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

En effet les liens ne sont plus dans l'en-tête. Mais si je demande l'une des URL correspondantes, elles fonctionnent toujours. Je viens de supprimer les liens, pas la fonctionnalité.

J'ai trouvé un indice sur wpengineer et ajouté ce qui suit à mon 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);

Ne semble pas fonctionner (bien que j'ai vu beaucoup de références à un tel code).

Avez-vous une idée de la façon dont je pourrais supprimer tous ces flux, RPC, etc.? Ou du moins, leur demander de retourner quelque chose comme "Rien ici"?

Remarques:

  • Je ne veux pas éditer les fichiers wp de base bien sûr!

  • Je pense que la zone d'administration utilise des flux. Je suis d'accord avec ça, je veux juste qu'ils soient retirés du début.

2
Mat

Le template_redirect le template-loader.php démarre.

add_action( 'template_redirect', function() {

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

Si la fonction do_feed() est appelée, quelques actions peuvent être appelées.

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 );
    } 
} );

Les actions de flux ci-dessus et bien d’autres sont ajoutées dans default-filters.php

Pour désactiver 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;
} ); 

Pour supprimer des liens:

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

Pour bloquer l'accès à wlwmanifest et xmlrpc, ajoutez ces lignes à votre .htaccess :

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

Pour plus de liens à supprimer, vous pouvez voir Supprimer les liens de l'API JSON dans l'en-tête html qui inclut les liens WP-API & oembed et Désactiver les émojicons introduits avec WP 4.2 .

4
jgraup