如何通过外部PHP脚本获取WordPress用户元数据并查询MoolaMojo代币数量
PHP脚本调整方案
核心调整逻辑
- 首先要在脚本开头加载WordPress核心文件,才能调用WP原生的用户校验函数和MoolaMojo插件的相关方法
- 替换原有的硬编码账号校验逻辑,改用WordPress官方的
wp_authenticate方法校验用户账号密码有效性 - 调用MoolaMojo插件的余额查询接口获取用户代币持有量
修改后完整代码
<?php // 加载WordPress核心,此处路径请根据你脚本的实际存放位置调整,比如脚本放在WP根目录的api文件夹下,就写../wp-load.php require_once dirname(__FILE__) . '/../wp-load.php'; // Load Request $api_method = isset($_POST['api_method']) ? $_POST['api_method'] : ''; $api_data = isset($_POST['api_data']) ? $_POST['api_data'] : ''; // Validate Request if (empty($api_method) || empty($api_data)) { API_Response(true, 'Invalid Request'); } if (!function_exists($api_method)) { API_Response(true, 'API Method Not Implemented'); } // Call API Method call_user_func($api_method, $api_data); /* Helper Function */ function API_Response($isError, $errorMessage, $responseData = '') { exit(json_encode(array( 'IsError' => $isError, 'ErrorMessage' => $errorMessage, 'ResponseData' => $responseData ))); } /* API Methods */ function loginUser($api_data) { // Decode Login Data $login_data = json_decode($api_data); // 校验JSON解码是否成功 if (json_last_error() !== JSON_ERROR_NONE || empty($login_data->username) || empty($login_data->password)) { API_Response(true, '请求参数不完整或格式错误'); } // 调用WordPress原生方法校验用户名密码 $user = wp_authenticate($login_data->username, $login_data->password); if (is_wp_error($user)) { API_Response(true, '用户名或密码错误'); } // 查询MoolaMojo代币余额,优先用插件内置方法,不存在的话直接查用户元数据 $balance = 0; if (function_exists('moolamojo_get_balance')) { $balance = moolamojo_get_balance($user->ID); } else { $balance = get_user_meta($user->ID, 'moolamojo_balance', true); $balance = $balance ? floatval($balance) : 0; } // 成功返回结果 API_Response(false, '', [ 'user_id' => $user->ID, 'username' => $user->user_login, 'moolamojo_balance' => $balance ]); } ?>
注意事项
- 引入
wp-load.php的路径需要根据你脚本的实际存放位置调整,如果脚本放在WordPress根目录下,直接写require_once 'wp-load.php';即可 - 生产环境部署建议增加请求频率限制、HTTPS强制校验,避免密码明文传输被窃取
- 如果你使用的MoolaMojo版本自定义了余额存储字段,可根据实际情况调整元数据查询的key值
内容的提问来源于stack exchange,提问作者jeffinter
相关产品推荐
相关产品推荐

