【发布时间】:2018-08-15 23:59:37
【问题描述】:
我通过更改模板/genesis-sample/woocommerce/checkout/review-order.php 在运输方式部分添加了两个自定义输入字段
我还设法让他们有条件地被要求。只有在选中特定单选按钮时,才会出现输入字段并成为必需的。我正在使用 jQuery 代码使字段出现和消失。所有这些工作正常。代码在这里:
if ( isset($_POST['shipping_method_0_legacy_local_pickup']) && $_POST['shipping_method_0_legacy_local_pickup'] == 1 ) {
$cheq = 'true';
}
else {
$cheq = 'false';
}
woocommerce_form_field( 'fieldtester1' , array(
'type' => 'text',
'class' => array('wccs-field-class wccs-form-row-wide blahblah1'),
'label' => 'Enter Your Carrier Name',
'required' => $cheq,
'placeholder' => 'Carrier Name',
), $checkout->get_value( 'fieldtester1' ));
woocommerce_form_field( 'fieldtester2' , array(
'type' => 'text',
'class' => array('wccs-field-class wccs-form-row-wide blahblah2'),
'label' => 'Enter Your Carrier Account #',
'required' => $cheq,
'placeholder' => 'Carrier Number',
), $checkout->get_value( 'fieldtester2' ));
但问题是,即使将两个字段的required 属性设置为true,如果按下Place Order 按钮时字段为空,验证也不会发生。理想情况下,订单不应通过,并且应生成错误消息。我已经在functions.php 中添加了以下代码来强制验证输入字段,但它没有做任何事情。代码在这里:
add_action('woocommerce_checkout_process', 'carrier_checkout_process');
function carrier_checkout_process() {
if ( isset($_POST['shipping_method_0_legacy_local_pickup']) && $_POST['shipping_method_0_legacy_local_pickup'] == 1 ) {
if( empty( $_POST['fieldtester1'] ) ) {
wc_add_notice( ( "Please don't forget to enter your shipping carrier details." ), "error" );
}
}
}
所以,这就是我要找的东西:
- 谁能帮我强制验证两个输入字段我 添加了吗?
- 验证后,我还想在新的订单电子邮件中添加这两个字段,并在 Wordpress 仪表板中添加订单详细信息。
如果您想知道为什么我首先不使用 woocommerce 结帐字段挂钩来添加输入字段...我没有将字段添加到结帐表单,因此挂钩没有任何帮助。这些字段被添加到运输方式部分。另一个原因是,我想在每次用户切换运输方式时更新required 属性。使用 Jquery 更改 required 属性无论出于何种原因都不起作用,相信我我尝试了两天。无论如何,那部分已经开始工作了。唯一的问题是让字段验证并将它们添加到订单电子邮件和订单详细信息中。我环顾四周,最接近的帮助是这篇帖子where LoicTheAztec gave a detailed solution
【问题讨论】:
-
刚刚在该链接上投票支持您的答案,这是模板pastebin.com/HK8AEuim 的完整代码,还有用于隐藏和显示字段的 JQuery 代码。 WooCommerce 版本是 3.0.5。实时站点在这里truckingtarps.com/shop我已经尝试过您所说的...将所需字段设置为false,然后尝试使用JQuery ...没有用
-
这是 WooCommerce 状态报告,您可以查看安装了哪些插件:pastebin.com/sU7NAkCZ
标签: php jquery wordpress woocommerce shipping-method