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

如何为WordPress自定义数据库表添加行删除按钮并实现功能

解决自定义数据库表行删除按钮的关联问题

一、修正删除函数并添加触发机制

你的删除函数需要通过WordPress标准的后台表单提交钩子触发,同时要修正表名传递、删除条件的问题(你的表主键是user_id,不是代码里的id):

// 注册删除动作的钩子,处理后台表单提交
add_action('admin_post_delete_wallet_user', 'del_wallet_user');
add_action('admin_post_nopriv_delete_wallet_user', 'del_wallet_user'); // 可选:支持非登录用户操作(如果需要)

function del_wallet_user() {
    global $wpdb;
    
    // 安全校验:确保必要参数存在
    if (!isset($_POST['user_id'], $_POST['table'])) {
        wp_redirect(wp_get_referer());
        exit;
    }
    
    $table_name = $wpdb->prefix . sanitize_text_field($_POST['table']);
    $user_id = intval($_POST['user_id']);
    
    // 执行删除操作,匹配表的主键字段user_id
    $wpdb->delete($table_name, ['user_id' => $user_id]);
    
    // 删除后重定向回原页面,避免刷新重复提交
    wp_redirect(wp_get_referer());
    exit;
}

二、修改表格代码,添加每行的删除表单

你之前的按钮代码存在语法错误,需要给每行包裹独立表单,传递删除所需的参数:

<?php 
//get_header(); 

global $wpdb; 
$table_name = $wpdb->prefix . "hubaya_wallet_users";
$result = $wpdb->get_results("SELECT * FROM $table_name");

echo '<h1>PAY USERS</h1><br><br>

<table border="1"> 
  <tr> 
  <th>ID</th> 
  <th>ROLE</th> 
  <th>BALANCE</th>
  <th>REG DATE</th>
  <th>Mobile Number</th>
  <th>操作</th> <!-- 新增操作列标题 -->
  </tr>';

foreach ( $result as $print ) { ?>
  <tr> 
    <td><?php echo $print->user_id; ?> </td>
    <td><?php echo $print->user_role; ?> </td> 
    <td> <?php echo $print->balance ; ?> </td>
    <td> <?php echo $print->created_date; ?> </td>
    <td><?php echo $print->phone_no; ?> </td>
    <!-- 新增删除按钮表单 -->
    <td>
        <form method="post" action="<?php echo admin_url('admin-post.php'); ?>">
            <!-- 隐藏字段:传递动作标识、表名、用户ID -->
            <input type="hidden" name="action" value="delete_wallet_user">
            <input type="hidden" name="table" value="hubaya_wallet_users">
            <input type="hidden" name="user_id" value="<?php echo $print->user_id; ?>">
            <input type="submit" value="删除" onclick="return confirm('确定要删除该用户吗?');">
        </form>
    </td>
  </tr> 
<?php } ?>

</table>

关键注意点

  • 用admin_post钩子是WordPress处理后台表单的标准方式,避免直接调用函数的安全风险;
  • 添加确认弹窗防止误删;
  • 对所有POST参数做安全处理(intval、sanitize_text_field),抵御SQL注入和XSS攻击;
  • 删除后重定向回原页面,避免刷新重复提交操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 03:45:18