php 自定义内置插件出现致命错误“Uncaught ArgumentCountError”

bkkx9g8r  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(61)

我正试图使一个插件,以便您可以显示已在不同的网站在自己的WordPress网站的事件,我得到了一个致命的错误,不知道如何进一步现在。
Copyright © 2019 www.wamp64.com All Rights Reserved.粤ICP备15044777号-1粤公网安备4401050200000114号
这是我的代码:

<?php

/*
Plugin Name: Spond Event
Description: Display Spond events on your WordPress site.
Version: 1.0
Author: Merel Rose de Vries
*/
// spond-plugin.php

session_start();

include_once(plugin_dir_path(__FILE__) . 'spond-class.php');

function spond_shortcode($atts) {
    // Check if the form is submitted
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        if (isset($_POST['logout']) && $_POST['logout'] == 1) {
            // Logout action: unset the session variable
            unset($_SESSION['spond_logged_in']);
            return 'Logged out successfully.';
        }

        $username = isset($_POST['username']) ? sanitize_text_field($_POST['username']) : '';
        $password = isset($_POST['password']) ? sanitize_text_field($_POST['password']) : '';

        // Assuming the form is submitted, redirect with form data as query parameters
        wp_redirect(add_query_arg(array('username' => $username, 'password' => $password), get_permalink()));
        exit();
    }

    // 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 a session variable to indicate the user is logged in
        $_SESSION['spond_logged_in'] = true;

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

    // Check if the user has already logged in
    if (isset($_SESSION['spond_logged_in']) && $_SESSION['spond_logged_in']) {
        // User has already logged in, keep the session active
        return display_events();
    }

    // User is not logged in, display the login form
    ob_start();
    your_plugin_page();
    return ob_get_clean();
}
// Register the shortcode
add_shortcode('spond_events', 'spond_shortcode');
// Add menu item
add_action('admin_menu', 'spondplugin');

function spondplugin() {
    add_menu_page(
        'Spond-plugin',
        'Spond-plugin',
        'manage_options',
        'your_plugin_menu',
        'your_plugin_page'
    );
    add_submenu_page(
        'your_plugin_menu',
        'Submenu Page',
        'Submenu Page',
        'manage_options',
        'your-submenu-page',
        'your_submenu_page'
    );
}

// Create plugin page content
function your_plugin_page() {
    echo '<div class="wrap">';
    echo '<h1>Spond Evenementen</h1>';
    echo '</div>';

    // Check if the user is logged in
    if (isset($_SESSION['spond_logged_in']) && $_SESSION['spond_logged_in']) {
        // Display logout button
        echo '<form action="" method="post">';
        echo '<input type="hidden" name="logout" value="1">';
        echo '<button type="submit">Logout</button>';
        echo '</form>';

        // Display events
        display_events();
    } else {
        // Display the login form
        echo '<form action="" method="post">';
        echo '<div>';
        echo '<div class="container">';
        echo '<label for="username"><b>Username</b></label>';
        echo '<input type="text" placeholder="Enter Username" name="username" required>';

        echo '<label for="password"><b>Password</b></label>';
        echo '<input type="password" placeholder="Enter Password" name="password" required>';

        echo '<button type="submit">fetch</button>';
        echo '</div>';
        echo '</form>';
    }
}

// ...

// Display events function
function display_events() {
    ob_start();
    $spond = new Spond(); // Instantiate with default username and password
    $spond->get_events('74ED14831B694B679A0CB778A33D860F');
    echo ob_get_clean();
}
?>

个字符

zengzsys

zengzsys1#

ArgumentCountError是自描述的,你的Spond类的初始化没有使用正确的参数计数。你的__construct方法需要$username$password,但是类的初始化没有传递:$spond = new Spond();
调用new Spond()的正确方法是$spond = new Spond($username, $password);,参数包含持有适当值的变量。

相关问题