WordPressのバージョン情報を自動的に最新バージョンに偽装する

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

カスタマイズの影響でWordPressのコアアップデートができない場合は、バージョン情報を非表示にするか偽装を行うことで旧バージョンを使っていることを隠蔽することができます。実装が行えるかを試しに作ってみた処理なのですが効果については未知数です。

functions.php
/*----------------------------------------------------
 WordPressのバージョン情報を自動的に最新バージョンに偽装する
----------------------------------------------------*/
if ( !function_exists( 'disguise_generator' ) ){
    // 既存のバージョンを非表示
    remove_action( 'wp_head', 'wp_generator' );

    function disguise_generator() {
        // 最新のバージョン(1 日 1 回だけ取りに行く)
        $wp_version = get_transient( 'disguise_wp_version' );
        if ( false === $wp_version ) {
            $wp_version = '';
            $res = wp_remote_get( 'https://api.wordpress.org/core/version-check/1.7/', array( 'timeout' => 3 ) );
            if ( ! is_wp_error( $res ) && 200 === wp_remote_retrieve_response_code( $res ) ) {
                $core = json_decode( wp_remote_retrieve_body( $res ) );
                if ( isset( $core->offers[0]->version ) ) {
                    $wp_version = (string) $core->offers[0]->version;
                }
            }
            set_transient( 'disguise_wp_version', $wp_version, DAY_IN_SECONDS );
        }
        if ( $wp_version !== '' ) {
            echo '<meta name="generator" content="WordPress ' . esc_attr( $wp_version ) . '" />' . "\n";
        }
    }
    add_action( 'wp_head', 'disguise_generator' );
}

 

ソースから動作確認

<meta name="generator" content="WordPress 6.4.2" />

最新のバージョンが表示されていれば実装完了です。

※ バージョンを偽っても、CSS・JS の ?ver= などからバージョンが分かることがあるので、守りの効果は小さいです。いちばんの対策は、WordPress を最新に更新することです。

WordPressバージョンを非表示にしたい場合はこちら

キャッシュ機能を使う場合

functions.php
$wp_version = '';
$cache = get_db_cache('wp_version', '86400');
if ( $cache === false ) {
    $core = @file_get_contents('https://api.wordpress.org/core/version-check/1.7/?locale=ja');
    if ( $core ) {
        $core_ary = json_decode($core);
        if ( isset($core_ary->offers['0']->version) ) {
            $wp_version = $core_ary->offers['0']->version;
            set_db_cache('wp_version', $wp_version);
        }
    }
} else {
    $wp_version = $cache;
}

上のコードは(2026 年 10 月に直して)、最新バージョンを 1 日 1 回だけ取りに行き、相手が遅いときも 3 秒であきらめるようにしてあるので、この書き方は使わなくて大丈夫です。

WordPress Developer Resources

関連機能

  1. WordPress 画像をリファラ判定を行い自サイトからのみ表示可能にする&PHPファイルの直接参照を禁止

  2. ローカル環境構築ツール「Local」でWordPress作業環境を構築 ( Windows,Mac対応 )

  3. /?author=id でアクセスした時の投稿者アーカイブリダイレクトを無効にする

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP