我正在使用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
(编辑我更改上面的代码以修复一些错误
作为参考检查链接简码