You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选MySQL单字段中存储的多条目s2member用户权限数据

快速提取s2member用户权限到期时间的落地方案

方案1:MySQL直接查询+导出CSV(最快直接)

s2member的序列化数据可以用MySQL字符串函数直接解析,不需要额外工具。先根据你的实际表名(默认是wp_usermeta)执行以下SQL查询:

SELECT 
  user_id AS 用户ID,
  -- 提取等级数值
  SUBSTRING_INDEX(SUBSTRING_INDEX(meta_value, '"level";i:', -1), ';', 1) AS 等级,
  -- 转换等级到期时间为可读格式
  FROM_UNIXTIME(SUBSTRING_INDEX(SUBSTRING_INDEX(meta_value, '"level_time";i:', -1), ';', 1)) AS 等级到期时间,
  -- 提取自定义权限(ccap)名称
  SUBSTRING_INDEX(SUBSTRING_INDEX(meta_value, '"ccap";s:[0-9]+:"', -1), '";', 1) AS 自定义权限,
  -- 转换权限到期时间为可读格式
  FROM_UNIXTIME(SUBSTRING_INDEX(SUBSTRING_INDEX(meta_value, '"ccap_time";i:', -1), ';', 1)) AS 权限到期时间
FROM 
  wp_usermeta -- 替换成你的实际表名
WHERE 
  meta_key IN ('s2member_access_meta', 's2member_subscr_meta') -- 根据你的实际meta_key调整
  AND meta_value LIKE '%level_time%'

执行后,用MySQL客户端(phpMyAdmin/Navicat等)的「导出」功能选择CSV格式,直接得到可用于Excel/Google Sheets的表格。


方案2:导出原始CSV后用Excel/Google Sheets公式解析(无需代码)

先把wp_usermeta表导出为CSV,然后在Excel/Google Sheets中用公式提取数据:

Excel公式示例:

  • 提取等级:
    =MID(D2,FIND("""level"";i:",D2)+LEN("""level"";i:"),FIND(";",D2,FIND("""level"";i:",D2)+LEN("""level"";i:")) - (FIND("""level"";i:",D2)+LEN("""level"";i:")))
    
  • 转换等级到期时间:
    =IFERROR(FROMUNIXTIME(MID(D2,FIND("""level_time"";i:",D2)+LEN("""level_time"";i:"),FIND(";",D2,FIND("""level_time"";i:",D2)+LEN("""level_time"";i:")) - (FIND("""level_time"";i:",D2)+LEN("""level_time"";i:")))),"无")
    
  • 提取自定义权限:
    =MID(D2,FIND("""ccap"";s:",D2)+LEN("""ccap"";s:")+2,FIND(""";",D2,FIND("""ccap"";s:",D2)) - (FIND("""ccap"";s:",D2)+LEN("""ccap"";s:")+2))
    

Google Sheets公式示例:

Google Sheets没有FROMUNIXTIME,用以下公式转换时间戳:

=IFERROR(DATE(1970,1,1)+(MID(D2,FIND("""level_time"";i:",D2)+LEN("""level_time"";i:"),FIND(";",D2,FIND("""level_time"";i:",D2)+LEN("""level_time"";i:")) - (FIND("""level_time"";i:",D2)+LEN("""level_time"";i:")))/86400),"无")

方案3:WordPress一键导出脚本(复制即用)

在WordPress根目录新建一个名为export-s2member-perms.php的文件,粘贴以下代码,访问该文件即可直接下载CSV:

<?php
require_once('wp-load.php');

// 设置CSV响应头
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=s2member-user-permissions.csv');

$output = fopen('php://output', 'w');
// 写入表头
fputcsv($output, ['用户ID', '等级', '等级到期时间', '自定义权限(CCAP)', '权限到期时间']);

// 遍历所有用户
$users = get_users();
foreach ($users as $user) {
    // 替换为你的实际meta_key,比如s2member_access_meta或s2member_subscr_meta
    $access_meta = get_user_meta($user->ID, 's2member_access_meta', true);
    
    // 跳过无效数据
    if (!is_array($access_meta)) {
        fputcsv($output, [$user->ID, '无', '无', '无', '无']);
        continue;
    }

    // 提取并格式化数据
    $level = $access_meta['level'] ?? '无';
    $level_expiry = isset($access_meta['level_time']) ? date('Y-m-d H:i:s', $access_meta['level_time']) : '无';
    $ccap = isset($access_meta['ccap']) ? (is_array($access_meta['ccap']) ? implode(', ', $access_meta['ccap']) : $access_meta['ccap']) : '无';
    $ccap_expiry = isset($access_meta['ccap_time']) ? date('Y-m-d H:i:s', $access_meta['ccap_time']) : '无';

    fputcsv($output, [$user->ID, $level, $level_expiry, $ccap, $ccap_expiry]);
}

fclose($output);
exit;

注意:使用前确认wp-load.php的路径正确,执行完后建议删除该脚本以保证安全。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:15:41