我有一个客户使用一些第三方表单,我想很容易地在他们的网站上找到这些表单。
为了方便地在站点范围内更新它们,我想我应该在选项页面上创建一个ACF repeater字段,其中包含form_id
和form_markup
我可以用它来构建短代码。用户可以在短代码中只输入表单的id,表单就会输出。
i、 e。[form form_id="1"]
问题是:如何从数据数组中调用正确的ID?我从这里开始:
function form_shortcode( $atts ) {
// Attributes
shortcode_atts(
array(
\'form_id\' => \'\',
), $atts
)
$forms = get_field( \'forms\', \'option\' );
foreach ( $forms as $form ) {
$form_id = get_sub_field( \'form_id\', \'option\' );
}
return $form_id;
}
add_shortcode( \'form\', \'form_shortcode\' );
我知道这是不对的,但我很难弄清楚这在后勤方面究竟应该如何运作。我真的很接近吗?
最合适的回答,由SO网友:Milo 整理而成
$atts[\'form_id\']
包含form_id
这是用短代码传递的。您正在搜索此form_id
在forms
领域
$forms
是一个数组,数组中的每个项目都是另一个带有两个键的数组:form_id
和form_markup
.
因此,对于$forms
, 你想检查一下form_id
匹配form_id
在短代码中请求。如果有匹配,return
这个form_markup
从该项目。
如果未找到匹配项,return
错误消息。
$forms = get_field( \'forms\', \'option\' );
foreach ( $forms as $form ) {
if( $atts[\'form_id\'] == $form[\'form_id\'] ){
return $form[\'form_markup\'];
}
}
return \'form id \' . $atts[\'form_id\'] . \' not found\';