使用自定义帖子类型中的自定义字段动态预填充“重力表单”字段

时间:2015-03-02 17:30:01

标签: php custom-post-type custom-fields gravity-forms-plugin

试图在标题中尽可能具体。基本上我有一个我正在研究的房地产网站,其中包含房产列表。该属性列表是一个自定义的帖子类型,并附加了几个其他自定义帖子类型(每个类型都有自己的自定义字段)。

每个属性都附有一个代理(自定义帖子类型),并附带自定义字段,如电子邮件,脸书,电话号码等。

我需要使用代理电子邮件(与作者电子邮件不同)动态预填充Gravity Forms上的隐藏字段,以便我可以向该地址发送电子邮件。

我尝试了以下但没有运气,因为我确定缺少从代理自定义帖子类型调用自定义字段的内容,但我不确定如何。这就是我到目前为止所做的工作:

add_filter('gform_field_value_agentemail', 'populate_post_agent_email');
function populate_post_agent_email($value){

global $post;

$agents_email = get_post_meta($post->ID, 'agent_email', true);

return $agents_email;
}

我添加了参数名称" agentemail"到重力形式领域。如果有人知道我缺少什么能够将此字段(或代理自定义帖子中的任何字段)转换为此表单,我们将非常感激。

感谢。

2 个答案:

答案 0 :(得分:0)

我现在正在处理这个问题 - 我能够将值从一个页面传递到另一个页面,并将信息附加到网址的末尾 -

离。 http://www.your-website.com/?agentemail=agent@email.com

为此,您必须检查“允许此字段是否已填充”。在编辑相关字段时。

对我来说,这不是最重要的事情(我想在页面加载时生成此内容,而不是将其附加到按钮上,但它是一个开始。我和#39;当我完成过滤后,我会再次发表评论。

亚当

答案 1 :(得分:0)

以下是我使用Joshua David Nelson创建的一些代码填充我的GravityForms Dropdown,josh @ joshuadnelson.com

通过一些小修改,我能够获得正确的输出到下拉框(正在寻找用户电子邮件地址而不是用户nicenames,但您可以修改此脚本以输出您想要的任何内容,只需对其进行一些小的更改查询args)

// Gravity Forms User Populate, update the '1' to the ID of your form
add_filter( 'gform_pre_render_1', 'populate_user_email_list' );
function populate_user_email_list( $form ){

// Add filter to fields, populate the list
foreach( $form['fields'] as &$field ) {

// If the field is not a dropdown and not the specific class, move onto the next one
// This acts as a quick means to filter arguments until we find the one we want
    if( $field['type'] !== 'select' || strpos($field['cssClass'], 'your-field-class') === false )
        continue;

// The first, "select" option
    $choices = array( array( 'text' => 'Just Send it to the Default Email', 'value' => 'me@mysite.com' ) );

// Collect user information
// prepare arguments
$args  = array(
    // order results by user_nicename
    'orderby' => 'user_email',
    // Return the fields we desire
    'fields'  => array( 'id', 'display_name', 'user_email' ),
);
// Create the WP_User_Query object
$wp_user_query = new WP_User_Query( $args );
// Get the results
$users = $wp_user_query->get_results();
//print_r( $users );

// Check for results
    if ( !empty( $users ) ) {
    foreach ( $users as $user ){
        // Make sure the user has an email address, safeguard against users can be imported without email addresses
        // Also, make sure the user is at least able to edit posts (i.e., not a subscriber). Look at: http://codex.wordpress.org/Roles_and_Capabilities for more ideas
        if( !empty( $user->user_email ) && user_can( $user->id, 'edit_posts' ) ) {
            // add users to select options
            $choices[] = array(
                'text'  => $user->user_email,
                'value' => $user->id,
            );
        }
    }
}

    $field['choices'] = $choices;

}

return $form;
}

/* end of populate advisors for dropdown field */

要使其工作,您需要做的就是将上面的代码添加到functions.php文件中,添加您想要更改的GravityForm的“ID”(添加到add_filter参考中)并添加您的下拉字段的“类别”(其中显示为“您的字段类”)。

如果您对上述代码有任何疑问,请与我们联系。

亚当