将重力表单复选框值插入高级自定义字段

时间:2013-01-09 作者:Rob

我试图将重力表单(创建新帖子)中的复选框值输入到高级自定义字段字段中。我仔细阅读了一下,在一篇帖子中找到了一些信息(在问题的底部)。

这是正确的方法吗?它没有将多个GF复选框插入ACF文本框。我是否应该在ACF中创建具有相同选项的复选框?这是我的代码:

add_action("gform_post_submission", "acf_post_submission", 10, 2);

function acf_post_submission ($entry, $form)
{
    $post_id = $entry["post_id"];
    $values = get_post_custom_values("submit_intended", $post_id);  
    update_field("field_23", $values, $post_id);

}
我还尝试了以下与屏幕截图相关的内容:

add_action("gform_post_submission", "checkbox_arrays", 10, 2);
function checkbox_arrays($entry, $form)
{
    $post_id = $entry["post_id"];
    $form_id = $entry["form_id"];

    if ($form_id==3)
    {
        $values = get_post_custom_values("submit_gf_intended", $post_id);
        add_post_meta($post_id, "submit_intended", $values);
    }
}
This post 在高级自定义字段论坛中,可以帮助-http://support.advancedcustomfields.com/discussion/544/acf-and-gravity-forms/p1

我还附上了一些截图。

enter image description hereenter image description here

2 个回复
最合适的回答,由SO网友:Andy 整理而成

我解决这个问题的情况有点问题,因为我想使用GF更新帖子插件,让我的用户在提交内容后立即编辑他们的帖子。使用上述解决方案,ACF不会写入db和正确的ACF字段(至少对我来说不是这样)。

我的解决方案:

创建ACF自定义字段组,添加具有相同复选框的字段,并使用与重力表单相同的meta\\u键。

提交后使用函数以数组形式获取所有匹配的键,并更新ACF字段键(在屏幕上显示->ACF字段组编辑屏幕中的ACF字段值)

add_action("gform_after_submission_YOUR_FORM_ID", "acf_post_submission", 10, 2);

function acf_post_submission ($entry, $form)
{
   $post_id = $entry["post_id"];
   $values = get_post_custom_values("YOUR_CUSTOM_FIELD", $post_id);
   update_field("ACF_FIELD_KEY", $values, $post_id);
}

SO网友:webaware

今天早上我又看了一遍,我想你的问题和解决方案都很简单。

注意:使用当前版本--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至少很高兴。

结束

相关推荐

使用自定义php的WordPress身份验证?

我需要将wordpress登录集成到我的php网站中,为了单次登录访问我的网站和wordpress博客,我使用了一些使用curl的代码,它登录到用户中,然后重定向到我的主页,在我访问wordpress博客后,它不会验证我的身份,它说我要登录,am使用以下代码$username=\"admin\"; $password=\"blog\"; $url=\"http://wordpressblogURL/\"; $cookie=\"cookie.txt\"; $post

将重力表单复选框值插入高级自定义字段 - 小码农CODE - 行之有效找到问题解决它

将重力表单复选框值插入高级自定义字段

时间:2013-01-09 作者:Rob

我试图将重力表单(创建新帖子)中的复选框值输入到高级自定义字段字段中。我仔细阅读了一下,在一篇帖子中找到了一些信息(在问题的底部)。

这是正确的方法吗?它没有将多个GF复选框插入ACF文本框。我是否应该在ACF中创建具有相同选项的复选框?这是我的代码:

add_action("gform_post_submission", "acf_post_submission", 10, 2);

function acf_post_submission ($entry, $form)
{
    $post_id = $entry["post_id"];
    $values = get_post_custom_values("submit_intended", $post_id);  
    update_field("field_23", $values, $post_id);

}
我还尝试了以下与屏幕截图相关的内容:

add_action("gform_post_submission", "checkbox_arrays", 10, 2);
function checkbox_arrays($entry, $form)
{
    $post_id = $entry["post_id"];
    $form_id = $entry["form_id"];

    if ($form_id==3)
    {
        $values = get_post_custom_values("submit_gf_intended", $post_id);
        add_post_meta($post_id, "submit_intended", $values);
    }
}
This post 在高级自定义字段论坛中,可以帮助-http://support.advancedcustomfields.com/discussion/544/acf-and-gravity-forms/p1

我还附上了一些截图。

enter image description hereenter image description here

2 个回复
最合适的回答,由SO网友:Andy 整理而成

我解决这个问题的情况有点问题,因为我想使用GF更新帖子插件,让我的用户在提交内容后立即编辑他们的帖子。使用上述解决方案,ACF不会写入db和正确的ACF字段(至少对我来说不是这样)。

我的解决方案:

创建ACF自定义字段组,添加具有相同复选框的字段,并使用与重力表单相同的meta\\u键。

提交后使用函数以数组形式获取所有匹配的键,并更新ACF字段键(在屏幕上显示->ACF字段组编辑屏幕中的ACF字段值)

add_action("gform_after_submission_YOUR_FORM_ID", "acf_post_submission", 10, 2);

function acf_post_submission ($entry, $form)
{
   $post_id = $entry["post_id"];
   $values = get_post_custom_values("YOUR_CUSTOM_FIELD", $post_id);
   update_field("ACF_FIELD_KEY", $values, $post_id);
}

SO网友:webaware

今天早上我又看了一遍,我想你的问题和解决方案都很简单。

注意:使用当前版本--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至少很高兴。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请