File: //var/www/html/bwcdev/wp-content/plugins/really-simple-ssl/security/wordpress/hide-wp-version.php
<?php
defined( 'ABSPATH' ) or die();
if ( ! class_exists( 'rsssl_hide_wp_version' ) ) {
class rsssl_hide_wp_version {
private static $_this;
public $new_version = false;
function __construct() {
if ( isset( self::$_this ) ) {
wp_die( "you cannot create a second instance of a singleton class" );
}
self::$_this = $this;
add_action( 'init', array($this, 'remove_wp_version') );
add_filter( 'rsssl_fixer_output', array( $this, 'replace_wp_version') );
}
static function this() {
return self::$_this;
}
/**
* Remove WordPress version info from page source
*
* @return void
*/
public function remove_wp_version() {
// remove <meta name="generator" content="WordPress VERSION" />
add_filter( 'the_generator', function () {
return '';
} );
// remove WP ?ver=5.X.X from css/js
add_filter( 'style_loader_src', array( $this, 'remove_css_js_version' ), 9999 );
add_filter( 'script_loader_src', array ($this, 'remove_css_js_version'), 9999 );
remove_action( 'wp_head', 'wp_generator' ); // remove wordpress version
remove_action( 'wp_head', 'index_rel_link' ); // remove link to index page
remove_action( 'wp_head', 'wlwmanifest_link' ); // remove wlwmanifest.xml (needed to support windows live writer)
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10 ); // Remove shortlink
}
/**
* Generate a random version number
*
* @return string
*/
public function generate_rand_version() {
if ( !$this->new_version) {
$wp_version = get_bloginfo( 'version' );
$token = get_option( 'rsssl_wp_version_token' );
if ( ! $token ) {
$token = str_shuffle( time() );
update_option( 'rsssl_wp_version_token', $token );
}
$this->new_version = hash( 'md5', $token );
}
return $this->new_version;
}
/**
* @param string $html
*
* @return string
*
*/
public function replace_wp_version( $html ) {
$wp_version = get_bloginfo( 'version' );
$new_version = $this->generate_rand_version();
return str_replace( '?ver=' . $wp_version, '?ver=' . $new_version, $html );
}
/**
* @param $src
*
* @return mixed|string
* Remove WordPress version from css and js strings
*/
public function remove_css_js_version( $src ) {
if ( empty($src) ) {
return $src;
}
if ( strpos( $src, '?ver=' ) && strpos( $src, 'wp-includes' ) ) {
$wp_version = get_bloginfo( 'version' );
$new_version = $this->generate_rand_version();
$src = str_replace( '?ver=' . $wp_version, '?ver=' . $new_version, $src );
}
return $src;
}
}
}
RSSSL_SECURITY()->components['hide-wp-version'] = new rsssl_hide_wp_version();