koishi-plugin-wordpress-notifier 2.0.8 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -285,6 +285,78 @@ npm install
285
285
 
286
286
  ## 版本历史
287
287
 
288
+ ### 2.0.9 (2026-01-25)
289
+
290
+ - 🔧 增强用户注册日期处理,支持多种日期字段格式
291
+ - ✅ 支持WordPress主题中添加的`user_registered`和`registered_date`字段
292
+ - ✅ 在API请求中添加_fields参数,明确请求注册日期相关字段
293
+ - ✅ 请求字段包括:id,name,slug,date,date_registered,registered_date,user_registered,created_at,registeredAt,email,roles,url,description,link,avatar_urls
294
+ - ✅ 确保API返回完整的用户信息,包括注册日期
295
+ - ✅ 优化日期字段优先级顺序,优先使用`registered_date`和`user_registered`字段
296
+
297
+ ### 如何获取用户注册日期
298
+
299
+ WordPress REST API默认可能不会返回用户注册日期字段。您可以通过以下两种方式之一来启用:
300
+
301
+ #### 方式 1:修改当前主题「函数文件(functions.php)」
302
+ 1. 登录 WordPress 后台 → 外观 → 主题文件编辑器 → 选择当前使用的主题 → 打开「函数文件(functions.php)」;
303
+ 2. 在文件末尾粘贴以下代码,点击「更新文件」保存:
304
+
305
+ ```php
306
+ /**
307
+ * 为WordPress REST API /wp/v2/users接口添加注册时间字段
308
+ * 映射为registered_date,兼容代码中的字段读取逻辑
309
+ */
310
+ add_filter('rest_prepare_user', 'add_user_registered_date_to_rest', 10, 3);
311
+ function add_user_registered_date_to_rest($response, $user, $request) {
312
+ // 获取WordPress原生注册时间(数据库字段user_registered,格式为Y-m-d H:i:s)
313
+ $register_time = $user->user_registered;
314
+ // 将注册时间添加到API返回数据中,同时保留原生字段和代码中使用的registered_date
315
+ $response->data['user_registered'] = $register_time; // 原生字段名
316
+ $response->data['registered_date'] = $register_time; // 代码中尝试读取的字段名
317
+ return $response;
318
+ }
319
+ ```
320
+
321
+ #### 方式 2:创建自定义插件(推荐,避免主题更换丢失代码)
322
+ 1. 新建一个文本文件,命名为 `add-rest-user-registered-date.php`(注意后缀为 .php);
323
+ 2. 将以下代码粘贴到文件中(包含插件头注释,WordPress 可识别):
324
+
325
+ ```php
326
+ <?php
327
+ /**
328
+ * 插件名称:REST API 用户注册时间字段扩展
329
+ * 插件URI:https://www.rutua.cn/
330
+ * 描述:为/wp/v2/users接口添加注册时间(registered_date)字段,适配wordpress-notifier工具
331
+ * 版本:1.0
332
+ * 作者:kate522
333
+ * 作者URI:https://www.rutua.cn/archives/author/kate522/
334
+ */
335
+
336
+ // 过滤REST API用户响应,添加注册时间字段
337
+ add_filter('rest_prepare_user', 'add_user_registered_date_to_rest', 10, 3);
338
+ function add_user_registered_date_to_rest($response, $user, $request) {
339
+ $register_time = $user->user_registered;
340
+ $response->data['user_registered'] = $register_time;
341
+ $response->data['registered_date'] = $register_time;
342
+ return $response;
343
+ }
344
+ ```
345
+
346
+ 3. 将文件上传到 WordPress 服务器的 `wp-content/plugins/` 目录;
347
+ 4. 登录 WordPress 后台 → 插件 → 已安装插件 → 找到「REST API 用户注册时间字段扩展」→ 点击「启用」。
348
+
349
+ 添加上述代码后,插件将能够正确获取并显示用户注册日期。
350
+
351
+ ### 2.0.8 (2026-01-25)
352
+
353
+ - 🔧 增强用户注册日期处理逻辑,尝试所有可能的日期字段
354
+ - ✅ 添加调试日志,便于排查日期获取问题
355
+ - ✅ 扩展WordPressUser接口,支持更多日期字段和未知字段
356
+ - ✅ 按优先级遍历所有可能的日期字段,确保找到正确的注册日期
357
+ - ✅ 添加详细的日志记录,便于调试和问题定位
358
+ - ✅ 改进日期解析错误处理,确保不会显示"Invalid Date"
359
+
288
360
  ### 2.0.7 (2026-01-25)
289
361
 
290
362
  - 🐛 修复用户注册日期显示"Invalid Date"的问题
package/lib/index.d.ts CHANGED
@@ -43,6 +43,7 @@ export interface WordPressUser {
43
43
  date?: string;
44
44
  date_registered?: string;
45
45
  registered_date?: string;
46
+ user_registered?: string;
46
47
  created_at?: string;
47
48
  registeredAt?: string;
48
49
  email: string;
package/lib/index.js CHANGED
@@ -83,7 +83,10 @@ function apply(ctx, config) {
83
83
  }
84
84
  async function fetchLatestUsers() {
85
85
  try {
86
- const url = `${config.wordpressUrl}/wp-json/wp/v2/users?per_page=${config.maxArticles}&orderby=registered_date&order=desc`;
86
+ // 修改API请求,添加_fields参数明确请求注册日期字段
87
+ // WordPress REST API 默认可能不会返回注册日期,需要明确请求
88
+ const fields = 'id,name,slug,date,date_registered,registered_date,created_at,registeredAt,email,roles,url,description,link,avatar_urls';
89
+ const url = `${config.wordpressUrl}/wp-json/wp/v2/users?per_page=${config.maxArticles}&orderby=registered_date&order=desc&_fields=${fields}`;
87
90
  ctx.logger.info(`正在获取用户: ${url}`);
88
91
  // 准备请求配置,添加认证头(如果配置了用户名和应用程序密码)
89
92
  const requestConfig = {};
@@ -221,8 +224,9 @@ function apply(ctx, config) {
221
224
  ctx.logger.info(`正在处理用户 ${username} 的注册日期`);
222
225
  // 尝试所有可能的日期字段,按优先级排序
223
226
  const dateFields = [
224
- 'date_registered',
225
227
  'registered_date',
228
+ 'user_registered',
229
+ 'date_registered',
226
230
  'created_at',
227
231
  'registeredAt',
228
232
  'date'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koishi-plugin-wordpress-notifier",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
4
4
  "description": "WordPress 文章自动推送到 QQ",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",