我从这里开始使用一些PHP,该PHP根据联系表单7中的下拉菜单选择发送电子邮件。我希望它仅在其他三个输入之一为数字10时执行并发送电子邮件。
我尝试将开关与&&和||组合在一起运算符,但无法按预期执行。我在这里的学习受到了限制,因此,我将不胜感激。
/ * cf7自动响应开关* /
add_action('wpcf7_mail_sent','contact_form_autoresponders');
function contact_form_autoresponders( $contact_form ) {
if( $contact_form->id==14 ){ #your contact form ID - you can find this in contact form 7 settings
#retrieve the details of the form/post
$submission = WPCF7_Submission::get_instance();
$posted_data = $submission->get_posted_data();
#set autoresponders based on dropdown choice
switch( $posted_data['location'] ){ #your dropdown menu field name
case 'AB':
case 'AL':
case 'B':
case 'BA':
case 'BB':
case 'BD':
$msg="email a";
break;
case 'NW':
case 'N':
case 'E':
case 'W':
case 'SW':
case 'SE':
case 'WC':
case 'EC':
``` && if ( $posted_data['size1'] == 10 || $posted_data['size2'] == 10 || $posted_data['size3] == 10) ```
$msg="email b";
else $msg="email a";
break;
}
#mail it to them
mail( $posted_data['femail-610'], 'Thanks for your enquiry', $msg );
}
}
因此,我希望如果从表单下拉列表中选择了任何第一种情况,将发送电子邮件“ A”,如果选择了任何第二种情况,但仅当三个大小之一等于10时,电子邮件“ B”将发送否则它将发送电子邮件“ A”。
答案 0 :(得分:0)
开关根本不能那样工作。
您需要切换到if / else-if模式或使用查找字典。
答案 1 :(得分:0)
您可能应该使用in_array()
进行此类检查。
只需将您的开关更改为if语句,并使用要比较的值定义2个数组。
$locationsForEmailA = ['AB', 'AL', 'B', 'BA', 'BB', 'BD'];
$locationsForEmailB = ['NW', 'N', 'E', 'W', 'SW', 'SE', 'WC', 'EC'];
if(in_array($posted_data['location'], $locationsForEmailA, true) ||
in_array($posted_data['location'], $locationsForEmailB, true) &&
!($posted_data['size1'] == 10 || $posted_data['size2'] == 10 || $posted_data['size3'] == 10)){
$msg = "email a";
} else {
$msg = "email b";
}
答案 2 :(得分:0)
一些代码分析:
....
case 'SE':
case 'WC':
case 'EC':
直到此处,该开关是从上一个||
开始的上述调用case
指令的OR(break
)。如果将下一部分更改为:
if ( $posted_data['size1'] == 10
|| $posted_data['size2'] == 10
|| $posted_data['size3] == 10 )
{
$msg="email b";
}
......然后将整个if
条件与上述情况进行“与”运算⇒$msg="email b"
仅在其中至少一种情况有效的情况下才执行 AND 如果条件为TRUE,则以下内容。