wp-china-yes/client/wenpai-bridge-client.php
WenPai Dev 13d1d99487 feat: 集成文派云桥客户端 v2.1
- 新增 client/ 目录,包含 Bridge 客户端四个模块:
  - class-site-health.php: 每日站点健康上报(含 WooCommerce 扩展数据)
  - class-site-identity.php: 站点 UUID 唯一标识
  - class-fallback.php: 多级降级策略(Bridge → WordPress.org → 缓存)
  - wenpai-bridge-client.php: 引导加载器
- Plugin.php 新增 init_bridge_client() 方法,受 bridge 设置开关控制
- 版本号升级至 3.9.0

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-15 09:31:19 +00:00

42 lines
1.4 KiB
PHP

<?php
/**
* WenPai Bridge — 客户端引导加载器
*
* 在 wp-china-yes 主文件中 require 此文件即可启用遥测功能。
* 不依赖任何框架,可在插件重构前后直接使用。
*
* 用法:
* require_once __DIR__ . '/client/wenpai-bridge-client.php';
*
* @package WenPai\Bridge
* @since 1.0.0
*/
defined( 'ABSPATH' ) || exit;
// 加载模块
require_once __DIR__ . '/class-site-identity.php';
require_once __DIR__ . '/class-site-health.php';
require_once __DIR__ . '/class-fallback.php';
// 初始化遥测(在 plugins_loaded 之后,确保 WordPress API 可用)
add_action( 'init', [ 'WenPai_Bridge_Site_Health', 'init' ] );
add_action( 'init', [ 'WenPai_Bridge_Fallback', 'init' ] );
// Phase 3: 在发往云桥的 HTTP 请求中注入 X-Site-UUID 头(用于灰度发布分组)
add_filter( 'http_request_args', function ( $args, $url ) {
$parsed = parse_url( $url );
if ( isset( $parsed['host'] ) && 'updates.wenpai.net' === $parsed['host'] ) {
if ( ! isset( $args['headers'] ) || ! is_array( $args['headers'] ) ) {
$args['headers'] = [];
}
$args['headers']['X-Site-UUID'] = WenPai_Bridge_Site_Identity::get_uuid();
}
return $args;
}, 10, 2 );
// 插件停用时清理
register_deactivation_hook(
defined( 'CHINA_YES_PLUGIN_FILE' ) ? CHINA_YES_PLUGIN_FILE : __FILE__,
[ 'WenPai_Bridge_Site_Health', 'deactivate' ]
);