Contact Form 7 条件值基于没有 jquery 的下拉列表

Contact Form 7 Conditional value based on drop-down without jquery

我正在尝试获取函数的下拉选项值。基于它必须发送电子邮件的下拉值。以下 switch case 代码适用于文本框,但不适用于下拉列表 (select) 。我们必须在这种形式中做更多的过程,这样我们就可以避免联系形式 7 管道选项。

查看代码

<span class="wpcf7-form-control-wrap location">
<select name="location" class="wpcf7-form-control wpcf7-select wpcf7-validates-as-required" aria-required="true" aria-invalid="false">
<option value="">Select Location</option>
<option value="India">India</option>
<option value="UK & Europe">UK & Europe</option>
<option value="Americas">Americas</option>
<option value="Asia Pasific">Asia Pasific</option>
<option value="Oceania">Oceania</option>
</select>
</span>

函数代码

 add_action( 'wpcf7_before_send_mail', 'wpcf7_do_something_else_with_the_data', 90, 1 );
        
        function wpcf7_do_something_else_with_the_data( $WPCF7_ContactForm ){
         $submission = WPCF7_Submission :: get_instance();
        
            if ( $submission ){
                $posted_data = $submission->get_posted_data();      
                if ( empty( $posted_data ) ){ return; }
                
                
                $favcolor = $posted_data['location'];
    
                switch ($favcolor) {
                  case "India":
                    $changed_name = 'ddd@gmail.com';
                    break;
    
                   case "UK & Europe":
                    $changed_name = 'eee@gmail.com';
                    break;
    
                    case "Americas":
                        $changed_name = 'fff@gmail.com';
                        break;
    
                  case "Asia Pasific":
                    $changed_name = 'ggg@gmail.com';
                    break;
                  default:
                  $changed_name = 'hhh@gmail.com';
                  
                }
    
                $mail = $WPCF7_ContactForm->prop( 'mail' );
                
                $new_mail = str_replace( '[recipients]', $changed_name, $mail );
                // Set
                $WPCF7_ContactForm->set_properties( array( 'mail' => $new_mail ) );
                
                return $WPCF7_ContactForm;
            }}

在 5.1 和 5.2 之间的某个时间点,CF7 的开发人员决定将 selects 作为数组返回。这有点痛苦,因为它让我在更新网站时有些头疼。

但抛开意见...

尝试改变

$favcolor = $posted_data['location'];

$favcolor = $posted_data['location'][0];