概要説明
カスタマイズの影響でWordPressのコアアップデートができない場合は、バージョン情報を非表示にするか偽装を行うことで旧バージョンを使っていることを隠蔽することができます。実装が行えるかを試しに作ってみた処理なのですが効果については未知数です。
~ 目次 ~
コード – 既存バージョンを非表示にして最新版のバージョン情報を追記
functions.php
/*----------------------------------------------------
WordPressのバージョン情報を自動的に最新版に偽装する
----------------------------------------------------*/
if ( !function_exists( 'disguise_generator' ) ){
// 既存のバージョンを非表示
remove_action( 'wp_head', 'wp_generator');
function disguise_generator() {
// APIから最新版のバージョンを取得
$wp_version = '';
$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;
}
}
if ( $wp_version != '' ) {
// 最新版のバージョンを出力
echo '<meta name="generator" content="WordPress '.$wp_version.'" />';
}
}
add_action('wp_head', 'disguise_generator');
}
ソースから動作確認
<meta name="generator" content="WordPress 6.4.2" />
最新版のバージョンが表示されていれば実装完了です。
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;
}
上記のキャッシュ有りの記述に変えることでAPI通信処理は1日1回になります。



