首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML表单如何触发PHP函数?

HTML表单如何触发PHP函数?
EN

WordPress Development用户
提问于 2021-10-15 20:31:27
回答 2查看 975关注 0票数 0

我对Wordpress/PHP世界很陌生。我希望我的页面能够与我自己构建的API进行通信。为此,我在Wordpress页面上使用HTML代码小部件创建了一个表单,如下所示:

代码语言:javascript
复制

我将这段代码添加到当前主题的functions.php中:

代码语言:javascript
复制
function get_shortcode($sc) {
    $response = wp_remote_get('http://localhost:9000/shortcode/'.$sc);

    if (is_array($response)) {
        $body = $response['body'];
        $data = json_decode($body);
        echo $data;
        if (! is_wp_error($data)) {
            echo "error";
        }
    }

    return;
}

add_action('submit_shortcode', 'get_shortcode');

但我看不出如何将函数与表单集成。当我提交我的表单时,它会将我发送到mypage/ submit _shortcode。如何在提交表单时触发函数get_shortcode?

PS:这个“短代码”与Elementor的短代码小部件无关

EN

回答 2

WordPress Development用户

发布于 2021-10-15 22:45:22

听起来好像您想要某种AJAX请求。

在functions.php文件中,加入一些JavaScript以处理表单。

代码语言:javascript
复制
wp_register_script( 'my-scripts', get_stylesheet_directory_uri() . '/[path to your scripts]/myscripts.js', array( 'jquery' ), '1.0', true );

参考见此链接

在此下面,为AJAX添加一个JavaScript变量。

代码语言:javascript
复制
wp_localize_script( 'my-scripts', 'data', array( 'ajax_url' => admin_url( 'admin-ajax.php' );

参考wp_局部化_脚本管理员_url

注册脚本后,将其添加到队列中,以便可以加载它。

代码语言:javascript
复制
wp_enqueue_script( 'my-scripts' );

在此基础上,添加从API获取响应的代码。

代码语言:javascript
复制
// your function, set up for AJAX
function get_api_response() {
    $response = wp_remote_get('http://localhost:9000/shortcode/'.$sc);

    if (is_array($response)) {
        $body = $response['body'];
        $data = json_decode($body);
        echo $data;
        if (! is_wp_error($data)) {
            echo "error";
        }
    }

    wp_die(); // make sure you do this
}
add_action( 'wp_ajax_get_api_response', 'get_api_response' );
add_action( 'wp_ajax_nopriv_get_api_response', 'get_api_response' );

参考这里

最后,在JavaScript文件(本例中的myscripts.js)中,处理表单提交。

代码语言:javascript
复制
jQuery(document).ready(function($) {
    $('#myform').on('submit', function(e) {
        e.preventDefault(); // stop the form from submitting
        $.post(
            data['ajax_url'], // passed in from wp_localize_script
            {
                'input' : $('#input').val()
            },
            function( response ) {
                // do what you want to do here
                // the response will be what's echoed by the
                // get_api_response function
            }
        );
    });
});

如果您不想使用AJAX,则需要将所使用的“短代码”变成真正的短代码,并在您要将表单发布到的页面上使用。关于那个这里的信息。

然后,您的短代码将需要从表单中获取$_POST值,并对它们执行一些操作。无论是哪种情况,都要确保净化来自外部世界的所有价值观。

希望这能有所帮助。

干杯!

票数 0
EN

WordPress Development用户

发布于 2021-10-16 16:31:23

如果您对JavaScript很满意,那么我认为您在这里尝试的一种方法就是将您的函数的JavaScript版本排队,然后从表单中调用它作为onSubmit属性。因此,按照以下方针:

代码语言:javascript
复制
Enter name:      

您已经在myFunction或插件中加入了function.php

代码语言:javascript
复制
function load_my_script() {
    wp_enqueue_script( 'myFunction', get_template_directory_uri() . '/js/myFunction.js');
}
add_action( 'wp_enqueue_scripts', 'load_my_script' );
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/396962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档