隐藏或排除前端表单中的 ACF 字段并存储默认值

Posted

技术标签:

【中文标题】隐藏或排除前端表单中的 ACF 字段并存储默认值【英文标题】:Hide or exclude an ACF field in a front end form and store default value 【发布时间】:2019-11-07 12:56:06 【问题描述】:

我有一个附加到自定义帖子类型的字段组。它包含一个“状态”选择输入,用户可以从 wp 管理区域中选择一个选项。

我还有一个使用相同字段组的前端表单,因此较低级别的用户可以在前端创建帖子,但是他们不允许选择“状态”,他们必须接受默认值。

我设置了一个默认值并将其设为必需,然后使用设置 arg 从前端表单中排除该字段。这不起作用,它只是将字段值留空。

或者有没有办法在前端将字段输出为隐藏输入?

【问题讨论】:

“使用相同字段组的前端表单” - 我们究竟是通过什么插件进行交流,例如高级表单?查看您正在使用的解决方案有哪些可用的钩子,以便在表单呈现之前对其进行操作。提到的插件 f.e.当您通过函数调用 (advancedforms.github.io/guides/basic/displaying-a-form) 和一个可让您轻松添加隐藏字段的挂钩时,可以将字段排除在渲染之外,advancedforms.github.io/actions/af-form-hidden_fields 【参考方案1】:

该字段必须出现在前端表单中。如果不是,则该值不会存储在 post_meta 表中。你必须让它不可见。

你可以这样做(这里我的 acf 字段 slug 是“id_label”):

// set default value
add_filter('acf/load_field/name=id_label', function($field)    

    // set a dynamic value if necessary
    $field['default_value'] = '666';

    return $field;
);

// hide the field in frontend form
add_filter('acf/prepare_field/name=id_label', function($field) 
    
    if(!is_admin()) 
        $field['wrapper']['class'] = 'hide';
    

    return $field;
);

【讨论】:

以上是关于隐藏或排除前端表单中的 ACF 字段并存储默认值的主要内容,如果未能解决你的问题,请参考以下文章

请教如何修改WPFDatePicker控件的默认值默

允许“客户”用户角色使用 acf_form 在前端上传文件

PHP 循环$ POST数组并存储在表单隐藏字段中

ACF 默认值中的简码仅在保存帖子后才有效

drupal:表单 API,根据输入动态隐藏或显示字段

JavaScript Onclik在锚点中更改文本并启用具有表单字段的div并隐藏onload默认属性