基于form_id的WordPress表单简码



我正在使用WordPress练习。我创建了一个简单的表单插件,该插件通过form_id从数据库中获取表单字段。我正在尝试将form_id添加到简码中,因此如果我使用表单 ID 输入简码,我将根据form_id获得表单。

有这个函数来获取表单字段和我正在循环。结果很好,因此,如果我手动更改form_id,我将以相同的form_id获得结果。

用于获取表单的代码

function my_html_form() {
    $results = my_form_get_form_id();
    foreach ($results as $result) {
        $form_id = $result->id;
        $fields = my_form_get_fields($form_id);
    }
    //in here I am looping through $fields and getting all fields
}

在这里,我将表单添加到简码中,我知道像这样添加form_id是错误的,但我不知道如何添加。

添加简码

function my_form_shortcode() {
    ob_start();
    my_html_form();
    return ob_get_clean();
}

$results = my_form_get_form_id();
foreach ($results as $result) {
    $form_id = $result->id;
    $fields = my_form_get_fields($form_id);
    foreach ($fields as $field) {
        $fields_form_id = $field->form_id;
        add_shortcode( "my_form_shortcode:$fields_form_id", 'my_html_form()' );
    }

}

那么如何获得此my_form_shortcode:$fields_form_id的值.现在我只是得到了所有form_id但表单只是返回带有最后一个 id 的表单。因此,如果键入 [my_form_shortcode:form_id]。我将根据form_id获得表格。任何帮助将不胜感激。

你可以向短代码函数添加属性,并使用 do_shortcode('[my_form_shortcode id=1]' 调用它(;

function my_form_function($atts) {
    $atts = shortcode_atts(array(
                'id' => 0,
            ), $atts );
    ob_start();
    my_html_form($atts['id']);
    return ob_get_clean();
}
add_shortcode( "my_form_shortcode", 'my_form_function' );

您可以在my_html_form调用函数时删除 id(认为它会生成 html

(

编辑我更改上面的代码以修复一些错误

作为参考检查链接简码

最新更新