WordPress如何将user_meta中存储的交易数组渲染为表格展示
完全可以通过遍历实现,你需要先注意get_user_meta函数的参数配置,再循环输出即可,完整实现逻辑如下:
第一步:获取交易记录数据
你之前调用add_user_meta插入多条交易记录时,WordPress默认会在同个meta_key下存储多条独立的数组条目,所以获取数据时要将get_user_meta的第三个参数设置为false,才能拿到所有交易记录的集合,代码示例:
// 替换为你要查询的用户ID $user_id = 12345; // 第三个参数设为false,获取该key下所有meta值 $transactions = get_user_meta( $user_id, 'transactions', false );
如果第三个参数误设为true,只会返回第一条交易记录,这点是新手高频踩坑点。
第二步:判断数据并输出表格
如果要在前端输出可渲染的HTML表格,可以用以下代码:
if ( ! empty( $transactions ) ) { // 输出表格头部 echo '<table border="1" cellpadding="8" cellspacing="0">'; echo '<tr> <th>type</th> <th>amount</th> <th>date</th> <th>method</th> <th>status</th> </tr>'; // 循环遍历每条交易记录 foreach ( $transactions as $transaction ) { // 自动转义避免XSS风险 $type = esc_html( $transaction['type'] ); $amount = esc_html( $transaction['amount'] ); $date = esc_html( $transaction['date'] ); $method = esc_html( $transaction['method'] ); $status = esc_html( $transaction['status'] ); // 输出表格行 echo "<tr> <td>{$type}</td> <td>{$amount}</td> <td>{$date}</td> <td>{$method}</td> <td>{$status}</td> </tr>"; } echo '</table>'; } else { echo '<p>暂无交易记录</p>'; }
如果你需要输出和你示例一致的纯文本格式表格,把上面的HTML标签替换为对应的分隔符即可:
if ( ! empty( $transactions ) ) { $separator = "-----------------------------------------------------\n"; echo $separator; echo "type | amount | date | method | status\n"; echo $separator; foreach ( $transactions as $transaction ) { printf( "%-7s | %-7s | %-14s | %-6s | %s\n", $transaction['type'], $transaction['amount'], $transaction['date'], $transaction['method'], $transaction['status'] ); echo $separator; } }
补充注意点
如果后续你需要修改或删除某条特定的交易记录,需要在插入的时候获取返回的meta_id进行操作,不要直接用update_user_meta,否则会覆盖所有同meta_key的记录。
内容的提问来源于stack exchange,提问作者r0naldinio
相关产品推荐
相关产品推荐

