Wordpress插件如何通过前端页面表单提交调用函数

Wordpress plugin how to call a function via a front end page form submit

我在插件中有一个函数可以在数据库中插入值,我希望当我在前端页面上提交表单时调用这个函数。我该怎么做?

我不知道该怎么办 这是我现在想调用的函数,我不知道还能做什么

function jal_install_data() {
    global $wpdb;
    
    $welcome_name = 'Mr. WordPress';
    $welcome_text = 'Congratulations, you just completed the installation!';
    
    $table_name = $wpdb->prefix . 'dbquestions';
    
    $wpdb->insert( 
        $table_name, 
        array( 
            'time' => current_time( 'mysql' ), 
            'name' => $welcome_name, 
            'text' => $welcome_text, 
        ) 
    );
}

我没有在前端使用表单,而是使用 div classes,class 名称是问题 这是我要调用该功能的按钮

<input type="button" id='next' value="Next" onlick="sum_values()">

请尝试 JSON.stringify() 数据,然后将其发送到 AJAX,如下所示:

function sum_values() {

var data = JSON.stringify({ 
    action: 'savedata', 
    'moneyOf': document.getElementById('priceSlider').value,
    'emailOf': document.getElementById('inputheaderBox').value
});

jQuery.ajax({
        type: 'POST',
        url: "<?php echo admin_url('admin-ajax.php'); ?>",
        data: data,               
        success: function(data){
            //alert('success');
            console.log(data);
        },
        error: function(errorThrown){
            console.log(errorThrown);
        }
    });
}

并在functions.php文件中写入如下代码,将数据存入数据库:

<?php
  function savedata(){

global $wpdb;
$wpdb->insert(
    'table_name',
    array(
        'field1' => $_POST['moneyOf'],
        'field2' => $_POST['emailOf'],
    ),
    array(
        '%s',
        '%s'
    )
);

die();
return true;
}
//
add_action('wp_ajax_savedata', 'savedata'); 
add_action('wp_ajax_nopriv_savedata', 'savedata'); 
?>

上面的代码需要一点修改来调用函数,这里是修改后的版本

function abc(){


jQuery.ajax({
        type: 'POST',
        url: "<?php echo admin_url('admin-ajax.php'); ?>",
        data: { action: 'savedata', 'question_id': document.getElementById('question_id').value, 'text': document.getElementById('text').value },               
        success: function(data){
            alert('success');
            console.log(data);
        },
        error: function(errorThrown){
            console.log(errorThrown);
        }
    });
}

这是 php 函数

function savedata(){
echo "<pre>";print_r($_POST);exit;
global $wpdb;
$wpdb->insert('questoptions',
     array(
        'question_id' => $_POST['question_id'],
        'text' => $_POST['text']

),
    array(
        '%s',
        '%s'
    )
);

die();
return true;
}

它正在调用函数,但问题是数据库 table 仍然是空的