Javascript 如何将值数组动态传递给<;选择>;联系人表格7中的字段?

Javascript 如何将值数组动态传递给<;选择>;联系人表格7中的字段?,javascript,php,wordpress,forms,contact-form-7,Javascript,Php,Wordpress,Forms,Contact Form 7,根据,可以通过以下方式将默认值从快捷码传递给CF7: //Wordpress管理区中CF7中的字段 [电子邮件*目标电子邮件默认值:快捷码\u attr] //Wordpress php模板中的短代码 [contact-form-7 id=“123”title=“contact-form”目的地电子邮件=”xxxxxx@example.com"] //functions.php中的函数 添加过滤器('shortcode_atts_wpcf7','custom_shortcode_atts_w

根据,可以通过以下方式将默认值从快捷码传递给CF7:

//Wordpress管理区中CF7中的字段
[电子邮件*目标电子邮件默认值:快捷码\u attr]
//Wordpress php模板中的短代码
[contact-form-7 id=“123”title=“contact-form”目的地电子邮件=”xxxxxx@example.com"]
//functions.php中的函数
添加过滤器('shortcode_atts_wpcf7','custom_shortcode_atts_wpcf7_filter',10,3);
函数自定义_短码_附件_wpcf7_过滤器($out,$pairs,$atts){
$my_attr='目的地电子邮件';
如果(isset($atts[$my_attr])){
$out[$my_attr]=$atts[$my_attr];
}
退回$out;
}

这适用于一个简单的文本字段,但我需要将一个值数组传递给
字段,并将它们用作其内部的
s;我试图修改一下这段代码,但显然它不起作用,或者至少我没能做到

即使没有这样一个纯文本,也可以使用短代码向CF7发送动态数据吗

如果不是的话,我愿意接受任何其他类型的解决方案,即使它涉及到另一种方法或其他插件是否有其他方法可以动态地将值数组发送到联系人表单7中的
字段


这些值是从数据库查询的数据(如帖子名、自定义字段等),因此,即使有涉及javascript的解决方案,它们也需要首先来自php。

下面是我用于获取美国州的表单标记示例。这是从数组生成的
。这可能更符合你想要做的事情

您可以看到,我还使用usermeta
billing\u state
来预先选择选项

话虽如此,您也应该能够使用相同的方法创建一个select标记,该标记执行任何WP_查询,并将结果放入option标记中

<?php

add_action('wpcf7_init', function (){
    wpcf7_add_form_tag( array('dd_states', 'dd_states*'), 'cf7_state_dropdown' , true );
});
function cf7_state_dropdown($tag) {

    $tag = new WPCF7_FormTag( $tag );

    $atts = array();

    $validation_error = wpcf7_get_validation_error( $tag->type );

    $class = wpcf7_form_controls_class( $tag->type );

    if ( $validation_error ) {
        $class .= ' wpcf7-not-valid';
    }

    $atts['class'] = $tag->get_class_option( $class );
    $atts['aria-required'] = 'true';
    $atts['aria-invalid'] = $validation_error ? 'true' : 'false';

    $atts = wpcf7_format_atts( $atts );

    // Get User ID and Billing State from DB
    $userid = get_current_user_id();
    $user_state = get_user_meta($userid, 'billing_state', true);

      $states = array ( 'FL'=>'Florida','AL'=>'Alabama','AK'=>'Alaska','AZ'=>'Arizona','AR'=>'Arkansas','CA'=>'California','CO'=>'Colorado','CT'=>'Connecticut','DE'=>'Delaware','DC'=>'District of Columbia','GA'=>'Georgia','HI'=>'Hawaii','ID'=>'Idaho','IL'=>'Illinois','IN'=>'Indiana','IA'=>'Iowa','KS'=>'Kansas','KY'=>'Kentucky','LA'=>'Louisiana','ME'=>'Maine','MD'=>'Maryland','MA'=>'Massachusetts','MI'=>'Michigan','MN'=>'Minnesota','MS'=>'Mississippi','MO'=>'Missouri','MT'=>'Montana','NE'=>'Nebraska','NV'=>'Nevada','NH'=>'New Hampshire','NJ'=>'New Jersey','NM'=>'New Mexico','NY'=>'New York','NC'=>'North Carolina','ND'=>'North Dakota','OH'=>'Ohio','OK'=>'Oklahoma','OR'=>'Oregon','PA'=>'Pennsylvania','RI'=>'Rhode Island','SC'=>'South Carolina','SD'=>'South Dakota','TN'=>'Tennessee','TX'=>'Texas','UT'=>'Utah','VT'=>'Vermont','VA'=>'Virginia','WA'=>'Washington','WV'=>'West Virginia','WI'=>'Wisconsin','WY'=>'Wyoming');

    $output = '<span class="wpcf7-form-control-wrap '.sanitize_html_class( $tag->name ).'"><select name="state" id="state" '.$atts.'>';
    $output .= "<option value=\"\"> - - Choose State - - </option>";
    foreach ($states as $abbrev=>$state){
    $selected = ($user_state == $abbrev) ? ' selected="selected"' : '';
        $output .= '<option value="'.$abbrev.'"'. $selected .'>'.$state.'</option>';
    }
    $output .= "</select></span>";
    $output .= $validation_error;

    return $output;
}

您可能只需要创建自己的表单标签。用户案例是什么?我以前从未见过它!谢谢@gtamborero设想一种情况,您有一个自定义的帖子类型(可以是“课程”、“产品”、“事件”),并且您希望在其模板中包含一个联系人表单,因此它出现在每个项目上。用例会自动在“选择”字段中填入特定的帖子(标题(因此,特定的课程产品或事件),以便更好地处理和分类接收方的电子邮件。谢谢@Sekhemty,然后使用此cf7插件: