web-dev-qa-db-ja.com

ヘッダー内のリンクを無効にする(フィードなど)

私はフィードとそのようなものを無効にしたい(rpc、pingback、wlwmanifest、prev/next)。その理由は、Webサイトはブログではないため、これらは役に立ちません。

私はプラグインで次のように書きました:

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

実際、リンクはもはやヘッダーにはありません。しかし私が対応するURLのどれかを要求すれば、それらはまだ機能します。機能性ではなくリンクを削除しました。

私はwpengineerに関するヒントを見つけ、私のプラグインに以下を追加しました:

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

(私はそのようなコードへの多くの参照を見ましたが)動作していないようです。

私はどのように私はこれらのフィード、RPCなどすべてを削除することができたかについての任意のアイデア?それとも少なくとも彼らは "ここには何もない"のようなものを返していますか?

ノート:

  • 私はもちろんコアwpファイルを編集したくありません!

  • 管理領域はフィードを使用していると思います。私はそれで大丈夫です、私はただそれらをフロントエンドから削除したいです。

2
Mat

template_redirect the 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!" ) );
    }
} );

do_feed() が呼び出された場合は、いくつかのアクションを呼び出すことができます。

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

上記のフィードアクションや他の多くのアクションは default-filters.php に追加されています。

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

リンクを削除するには

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

wlwmanifestxmlrpcへのアクセスをブロックするには、これらの行を .htaccess に追加します。

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

削除するリンクの詳細については、 ヘッダーhtml内のJSON APIリンクの削除 WP-APIと埋め込みリンクを含む WP 4.2 で導入された絵文字の無効化を参照してください。

4
jgraup