wake-up-neo.com

Links im Header deaktivieren (Feeds und so weiter)

Ich möchte Feeds und ähnliches deaktivieren (rpc, pingbacks, wlwmanifest, prev/next). Grund dafür ist, dass die Website kein Blog ist, so dass diese nicht von Nutzen sind.

Ich habe folgendes in ein Plugin geschrieben:

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

Tatsächlich befinden sich die Links nicht mehr in der Kopfzeile. Aber wenn ich eine der entsprechenden URLs anfordere, funktionieren sie immer noch. Ich habe gerade die Links entfernt, nicht die Funktionalität.

Ich habe einen Hinweis auf wpengineer gefunden und folgendes zu meinem Plugin hinzugefügt:

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

Scheint nicht zu funktionieren (obwohl ich viele Verweise auf solchen Code gesehen habe).

Irgendeine Idee, wie ich all diese Feeds, RPCs und so weiter entfernen könnte? Oder lassen Sie sie wenigstens so etwas wie "Nothing here" zurückgeben?

Anmerkungen:

  • Ich möchte natürlich keine wp-Dateien bearbeiten!

  • Ich denke, der Admin-Bereich verwendet Feeds. Mir geht es gut, ich möchte nur, dass sie vom Frontend entfernt werden.

2
Mat

Ein template_redirect der template-loader.php tritt ein.

add_action( 'template_redirect', function() {

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

Wenn die do_feed() aufgerufen wird, können einige Aktionen aufgerufen werden.

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

Die obigen Feed-Aktionen und viele andere werden in default-filters.php hinzugefügt.

So deaktivieren Sie 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;
} ); 

So entfernen Sie Links:

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

Um den Zugriff auf wlwmanifest und xmlrpc zu blockieren, fügen Sie diese Zeilen zu Ihrem .htaccess hinzu:

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

Weitere zu entfernende Links finden Sie unter Entfernen von JSON-API-Links in HTML-Header Enthält WP-API und zugehörige Links und Deaktivieren von Emojicons, die mit WP 4.2 eingeführt wurden.

4
jgraup