私はフィードとそのようなものを無効にしたい(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ファイルを編集したくありません!
管理領域はフィードを使用していると思います。私はそれで大丈夫です、私はただそれらをフロントエンドから削除したいです。
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');
wlwmanifest
とxmlrpc
へのアクセスをブロックするには、これらの行を .htaccess
に追加します。
RedirectMatch 403 ^.*/xmlrpc.php$
RedirectMatch 403 ^.*/wp-includes/wlwmanifest.xml$
削除するリンクの詳細については、 ヘッダーhtml内のJSON APIリンクの削除 WP-APIと埋め込みリンクを含む WP 4.2 で導入された絵文字の無効化を参照してください。