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

WordPress自定义Spond插件出现ArgumentCountError致命错误求助

问题:WordPress插件Spond事件展示遭遇致命错误

Fatal error: Uncaught ArgumentCountError: Too few arguments to function Spond::__construct(), 0 passed in C:\wamp64\www\stage\wordpress wpm\wp-content\plugins\spond-plugin\spond-plugin.php on line 122 and exactly 2 expected in C:\wamp64\www\stage\wordpress wpm\wp-content\plugins\spond-plugin\s

错误核心在于display_events()函数中,实例化Spond类时未传入构造函数要求的用户名和密码参数,而Spond类的__construct方法明确要求必须传入2个参数。


解决方案

1. 存储登录凭据到Session

用户登录成功后,将用户名和密码存入Session,后续直接从Session读取使用:

修改spond-plugin.php中处理$_GET参数的代码块:

// If there are query parameters, attempt to log in
if (isset($_GET['username']) && isset($_GET['password'])) {
    $username = sanitize_text_field($_GET['username']);
    $password = sanitize_text_field($_GET['password']);

    // Your Spond class instantiation
    $spond = new Spond($username, $password);
    $spond->login();

    // Set session variables for login status and credentials
    $_SESSION['spond_logged_in'] = true;
    $_SESSION['spond_username'] = $username; // 新增:存储用户名
    $_SESSION['spond_password'] = $password; // 新增:存储密码

    // Get and display events
    ob_start();
    $spond->get_events('74ED14831B694B679A0CB778A33D860F');
    return ob_get_clean();
}

2. 修改display_events()函数

从Session中读取存储的凭据,传入Spond类的构造函数:

// Display events function
function display_events() {
    ob_start();
    // 从Session获取登录凭据
    $username = isset($_SESSION['spond_username']) ? $_SESSION['spond_username'] : '';
    $password = isset($_SESSION['spond_password']) ? $_SESSION['spond_password'] : '';
    
    // 实例化时传入必填参数
    $spond = new Spond($username, $password);
    $spond->get_events('74ED14831B694B679A0CB778A33D860F');
    echo ob_get_clean();
}

3. 完善Logout逻辑

注销时同时清除存储的凭据,避免残留:

if (isset($_POST['logout']) && $_POST['logout'] == 1) {
    // Logout action: unset all session variables
    unset($_SESSION['spond_logged_in']);
    unset($_SESSION['spond_username']); // 新增:清除用户名
    unset($_SESSION['spond_password']); // 新增:清除密码
    return 'Logged out successfully.';
}

额外优化建议

  • 安全优化:Session存储明文密码存在风险,建议改为存储登录后获取的accessToken,修改Spond类的login方法,将accessToken存入Session,后续直接使用Token而非重复执行登录流程。
  • 错误防护:在display_events()中增加凭据校验,避免Session失效时再次触发错误:
function display_events() {
    ob_start();
    if (!isset($_SESSION['spond_username']) || !isset($_SESSION['spond_password'])) {
        echo '请重新登录';
        return ob_get_clean();
    }
    $username = $_SESSION['spond_username'];
    $password = $_SESSION['spond_password'];
    
    $spond = new Spond($username, $password);
    $spond->get_events('74ED14831B694B679A0CB778A33D860F');
    echo ob_get_clean();
}

内容的提问来源于stack exchange,提问作者Merel Rose De Vries

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 13:42:33