今天早上我又看了一遍,我想你的问题和解决方案都很简单。
注意:使用当前版本--WordPress 3.5,高级自定义字段3.5.7.2,重力表单1.6.11
首先,像文本字段这样的“普通”字段不需要额外的工作;在ACF中创建,创建一个使用它的帖子,以便GF可以在那里找到它,添加到GF表单,然后使用。该值将写入字段。工作完成了。无需其他代码。
现在,对于复选框,多个勾号意味着要向帖子添加多个值。GF实现了您所期望的sane WordPress插件的功能,它在Posteta表中创建了多个条目。但这不是ACF想要的。编辑帖子并勾选ACF字段上的多个复选框时,保存的是带有序列化数组的单个Posteta记录。美好的
因此,要“修复”GF正在执行的操作,使其按ACF所需的方式损坏,请获取表单ID,并添加一个过滤器,以便在GF将post数据保存到POSTETA之前对其进行过滤:
$formID = 1; // replace with ID of your form
add_filter("gform_post_data_$formID", \'wpse_78826_gformPostData\', 10, 3);
/**
* dirty hack to write checkbox field values as serialised arrays
* to please Advanced Custom Fields, which is _doing_it_wrong()
* @param array $post_data not really the $_POST data, more like a summary of it
* @param array $form the GF form "object"
* @param array $lead the GF lead / entry "object"
* @return array
*/
function wpse_78826_gformPostData($post_data , $form, $lead) {
$post_data[\'post_custom_fields\'][\'checkboxen\'] = serialize(explode(\',\', $post_data[\'post_custom_fields\'][\'checkboxen\']));
return $post_data;
}
工作完成了。令人讨厌的黑客,但ACF至少很高兴。