替换或更改wp_version_check()函数

时间:2020-07-20 作者:Moa Andersen

你可能知道,关于wp_version_check()update.php 十年来一直是一个热门话题。

My question is this;我们可以通过使用子主题/自定义父主题;“未设置”;或者用我们自己的版本替换核心文件,在本例中update.php 文件位于wp-includes 文件夹

想法很简单=能够停止向WP发送数据。与许多人交谈后,没有一个人希望在每次更新时将他们的数据传输给WP。

也就是说;我知道,通过使用http_request_args 过滤器挂钩?

Something like this:

add_filter( \'http_request_args\', \'anonymize_ua_string\' );
function anonymize_ua_string($args){
global $wp_version;
$args[\'user-agent\'] = \'WordPress/\' . $wp_version;

// catch the data set by wp_version_check()
if (isset($args[\'headers\'][\'wp_install\'])){
$args[\'headers\'][\'wp_install\'] = \'https://example.com\';
$args[\'headers\'][\'wp_blog\'] = \'https://example.com\';
}
return $args;
}
但是,如果有人对其进行测试,效果会如何?

1 个回复
最合适的回答,由SO网友:Roel Magdaleno 整理而成

我认为你的方法会起作用,因为如果你使用Postman或失眠症发出POST(甚至使用GET)请求,那么检查WP版本的API URL仍然有效。它返回更新WP所需的数据。

但我会添加更多验证,以避免另一个HTTP请求出错:

add_filter( \'http_request_args\', \'stop_sending_wp_data\', 10, 2 );
function stop_sending_wp_data( $parsed_args, $url ) {
  $wp_url = \'api.wordpress.org/core/version-check/\';
  
  if ( false === strpos( $url, $wp_url ) ) {
    return $parsed_args;
  }
  
  if ( ! isset( $parsed_args[\'headers\'] ) || ! isset( $parsed_args[\'headers\'][\'wp_install\'] ) ) {
    return $parsed_args;
  }
  
  $parsed_args[\'headers\'][\'wp_install\'] = \'https://example.com\';
  $parsed_args[\'headers\'][\'wp_blog\']    = \'https://example.com\';
  
  return $parsed_args;
}
仅在以下情况下运行代码$url 匹配API URL$wp_url 变量因此,它将针对非常特定的请求而不是每个请求运行。

相关推荐

Security updates to 3.3.2

我知道所有的安全更新都很重要,但从1到10的范围来看,从3.1.3升级到3.3.2有多重要。我有一些网站需要升级,但主机将我锁定在一个旧版本的php中,限制我使用3.1.3。我目前正在运行php的5.2.3版本。谢谢Bart