[WordPress] バージョン情報を隠す/非表示にする方法

Tech Wordpress

WordPressのバージョン情報を非表示にする方法を記載しました。
コピペでおk。

前置き

普段Webサイトを眺める際に、 Wappalyzer(Chrome拡張機能)を使ってどういうフレームワークやトラッキングを使っているのか調べているのですが。

このサイトはホスティングサーバーの上でWordpressを動かしている+学君から購入したテーマを利用しているのですが、デフォルトだとバージョン情報が公開されているんですね。
Wappalyzerで見ると一目瞭然。(ブラウザの開発者モードで開くともっとHeader情報見れます)
これはセキュリティ的に良くないのではないかと思って、修正することにしました。

※これを行うことでセキュリティリスクへの対応ができる、というわけではありません。不正ログイン対策やWAFの導入、定期的なバージョンアップ等を適切に行ってください。

具体的な方法

下記を利用しているテーマのfunctions.phpに記入するだけです。
WordPressの管理画面、外観>テーマエディターから修正できます。

// remove generator
remove_action( 'wp_head', 'wp_generator');

// remove rel="shortlink"
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );

// remove RSD xmlrpc.php?rsd
remove_action( 'wp_head', 'rsd_link');

//remove Version information output to JS, CSS
function remove_src_ver_except_admin( $src ) {
    if ( ! current_user_can( 'administrator' ) ) {
        $src = remove_query_arg( 'ver', $src );
    }
    return $src;
}
add_filter( 'script_loader_src', 'remove_src_ver_except_admin' );
add_filter( 'style_loader_src', 'remove_src_ver_except_admin' );

解説

remove_action

remove_action( $tag, $function_to_remove, $priority, $accepted_args )

この関数は remove_filter() の別名です。
この関数は、特定のアクションフックに付加されている関数を除去します。特定のアクションフックに付加されているデフォルト関数を除去することができ、別のものに置き換えできます。remove_filter()add_action() および add_filter() も参照してください。


関数リファレンス/remove action – WordPress Codex 日本語版
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/remove_action

wp_generator

WordPressのバージョン情報を出力します。

利点がなさすぎるし脆弱性大公開な感じがして嫌なので消します。

wp_shortlink_wp_head

短縮リンクを出力します。

これも使わないものなので、消してしまいます。

rsd_link

外部サービスからブログを編集する際に必要になるAPIのリンクを出力します。

基本的にブラウザから投稿するので、必要ないので消します。

remove_query_arg

function remove_src_ver_except_admin( $src ) {
    if ( ! current_user_can( 'administrator' ) ) {
        $src = remove_query_arg( 'ver', $src );
    }
    return $src;
}
add_filter( 'script_loader_src', 'remove_src_ver_except_admin' );
add_filter( 'style_loader_src', 'remove_src_ver_except_admin' );

これはJavaScript、CSSに付与されるバージョン情報をWordpressにログインしていない場合に削除する、という内容になっています。

デフォルトでは、wp_enqueue_script() , wp_enqueue_style()という関数で出力されるJSやCSSにバージョン情報が付与されます。
それを削除してしまおう、という内容です。

WordPressにログインしている場合は、デバッグをやりやすくするために出力しておいた方が良いかな、と。