- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试修改 WooCommerce checkout 字段。我想达到的目标有两点。
条件字段
我想在运输部分为不同的运输类型创建条件字段。为了达到这一点,使用了 Javascript。
管理员可以在后端编辑订单中的自定义字段
因此,我编写了如下代码。
但是,我遇到了一个问题。我的 JavaScript 无法在前端运行。
有人可以帮助我吗?
//修改check out shipping field
add_action( 'woocommerce_before_checkout_shipping_form', 'add_shipping_type' );
function add_shipping_type( $checkout ) {
woocommerce_form_field( 'shipping_type', array(
'type' => 'radio',
'class' => array( 'form-row-wide' ),
'label' => '收件方式',
'options' => array(
'shipping_1' => '全家店到店',
'shipping_2' => '指定地址',
'shipping_3' => '自行取貨',
)
),$checkout->get_value( 'shipping_type' ));
}
add_filter( 'woocommerce_shipping_fields', 'custom_name_field_2' );
function custom_name_field_2($fields) {
$fields['shipping_first_name'] = array(
'label'=>"取件者 *",
'id' => 'shipping_first_name'
);
$fields['shipping_last_name'] = array(
'label'=>"手機號碼 *",
'id' => 'shipping_last_name'
);
$fields['shipping_company'] = array(
'label'=>"店名 *",
'id' => 'shipping_company'
);
$fields['shipping_city'] = array(
'label'=>"服務編號 *",
'id' => 'shipping_city'
);
$fields['shipping_address_1'] = array(
'label'=>"收件地址 *",
'id' => 'shipping_address_1'
);
$fields['shipping_address_2'] = array(
'label'=>"預計來訪時間 *",
'id' => 'shipping_address_2'
);
return $fields;
}
add_filter( 'woocommerce_shipping_fields', 'remove_shipping_company' );
function remove_shipping_company($fields){
unset($fields['shipping_country']);
unset($fields['shipping_state']);
return $fields;
}
add_filter("woocommerce_shipping_fields", "shipping_container");
function shipping_container(){
$output = '
<style>label.radio{display:inline-block;margin-right:1rem;}</style>
<script>
var $ = jQuery.noConflict();
$(document).ready(function(){
$("input[name=shipping_type]").on("change",function(){
if($("#shipping_type_shipping_1").is(":checked")) {
$("#shipping_first_name,#shipping_last_name,#shipping_city,#shipping_company").fadeIn();
} else {
$("#shipping_first_name,#shipping_last_name,#shipping_city,#shipping_company").fadeOut();
}
if($("#shipping_type_shipping_2").is(":checked")) {
$("#shipping_postcode,#shipping_address_1").fadeIn();
} else {
$("#shipping_postcode,#shipping_address_1").fadeOut();
}
if($("#shipping_type_shipping_3").is(":checked")) {
$("#shipping_address_2_field_2").fadeIn();
} else {
$("#shipping_address_2_field_2").fadeOut();
}
})
});
</script>
';
echo $output;
}
最佳答案
首先,当涉及同一个钩子(Hook)时,您可以合并一些函数...然后您的 jQuery 脚本最好像下面的代码一样设置它(您的 jQuery 脚本中也有很多小错误) :
// Customizing default checkout shipping fields
add_filter( 'woocommerce_shipping_fields', 'customizing_shipping_fields' );
function customizing_shipping_fields($fields){
# 1. Remove shipping fields
unset($fields['shipping_country']);
unset($fields['shipping_state']);
# 2. Customize shipping fields
$label_fields = array(
'first_name' => __('取件者 *'), 'last_name' => __('手機號碼 *'),
'company' => __('店名 *'), 'city' => __('服務編號 *'),
'address_1' => __('收件地址 *'), 'address_2' => __('預計來訪時間 *'),
);
foreach( $label_fields as $key => $value ){
$fields['shipping_'.$key]['label'] = $value;
$fields['shipping_'.$key]['id'] = 'shipping_'.$key;
}
# 3. Customize shipping fields required
$required_fields = array( 'first_name', 'last_name', 'company', 'city',
'address_1', 'address_2', 'postcode');
foreach( $required_fields as $key => $value )
$fields['shipping_'.$key]['required'] = false;
return $fields;
}
// Add a Custom radio field for shipping options
add_action( 'woocommerce_before_checkout_shipping_form', 'custom_shipping_radio_button', 10, 1 );
function custom_shipping_radio_button( $checkout ) {
# 1. CSS styling
?>
<style>label.radio{ display:inline-block; margin-right:1em; }</style>
<?php
# 2. Add a custom radio field
woocommerce_form_field( 'shipping_type', array(
'type' => 'radio',
'class' => array( 'form-row-wide' ),
'label' => __('收件方式'),
'options' => array(
'shipping_1' => __('全家店到店'),
'shipping_2' => __('指定地址'),
'shipping_3' => __('自行取貨'),
),
), $checkout->get_value( 'shipping_type' ) );
# 3. jQuery Script
?>
<script type="text/javascript">
jQuery(function($){
$("input[name=shipping_type]").on("change",function(){
if($("#shipping_type_shipping_1").is(":checked")) {
$("#shipping_first_name,#shipping_last_name,#shipping_city,#shipping_company").fadeIn();
} else {
$("#shipping_first_name,#shipping_last_name,#shipping_city,#shipping_company").fadeOut();
}
if($("#shipping_type_shipping_2").is(":checked")) {
$("#shipping_postcode,#shipping_address_1").fadeIn();
} else {
$("#shipping_postcode,#shipping_address_1").fadeOut();
}
if($("#shipping_type_shipping_3").is(":checked")) {
$("#shipping_address_2_field_2").fadeIn();
} else {
$("#shipping_address_2_field_2").fadeOut();
}
});
});
</script>
<?php
}
代码位于事件子主题(或事件主题)的 function.php 文件中。
经过测试并有效。
<小时/>现在,如果您想隐藏带有标签的字段,您的 jQuery 脚本将是:
<script type="text/javascript">
jQuery(function($){
$("input[name=shipping_type]").on("change",function(){
if($("#shipping_type_shipping_1").is(":checked")) {
$("#shipping_first_name_field,#shipping_last_name_field,#shipping_city_field,#shipping_company_field").fadeIn();
} else {
$("#shipping_first_name_field,#shipping_last_name_field,#shipping_city_field,#shipping_company_field").fadeOut();
}
if($("#shipping_type_shipping_2").is(":checked")) {
$("#shipping_postcode_field,#shipping_address_1_field").fadeIn();
} else {
$("#shipping_postcode_field,#shipping_address_1_field").fadeOut();
}
if($("#shipping_type_shipping_3").is(":checked")) {
$("#shipping_address_2_field_2").fadeIn();
} else {
$("#shipping_address_2_field_2").fadeOut();
}
});
});
</script>
经过测试并且也可以工作......
But you should need to set the fields to be not required as you will face some problems when submitting data… This will oblige you to make some other changes in order to get something functional. But this will be a new question…
关于php - 有条件地自定义 WooCommerce 结账字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48144199/
我正在为 WooCommerce 创建一个插件来修改结账页面。我想根据用户的购物车做一些条件过滤器。有没有办法查看购物车中的商品,并确定是否有任何商品不可下载/虚拟? 到目前为止,我有一个过滤器,并且
我必须检查一些代码并在我的 Eclipse 中运行它。我正在 Windows 上工作。我有网址: svn+ssh://somename1@subversion.host.com/GoogleCloud
我正在尝试删除 2 个结帐步骤。 我试图遵循站点中的文档http://guides.spreecommerce.com/checkout.html 但仍然没有任何 react 。 我在用 spree
我有一个未暂存的修改文件,我想放弃更改。 在 git 中它会是这样的 git checkout -- . 如何使用 JGit 模拟此行为? 提前致谢。 最佳答案 要恢复单个文件,您可以使用 Clean
所以我正在制作一个小型购物车应用程序。结帐项目是这样的:收集用户信息 -> 列出所有订单数据的订单确认页面 -> 用户点击 OK 并被重定向到 paypal -> 用户登录到他的 pp 帐户 -> 被
我正在尝试向大型卡特尔网站添加折扣代码字段。我在bigcartel设置了可用的折扣码,但是结账的时候没有显示折扣字段。这是因为我将用户发送到 PayPal 进行结帐。有没有办法在我的购物车中添加一个折
我有一个以通常方式集成 PayPal 的商店系统,即用户被重定向到 paypal.com 以登录并确认付款,之后用户被引导回到我的商店系统中的确认页面。 现在我的客户问是否可以在店内运行整个过程。 我
我正在尝试使用 checkout.com 从信用卡中扣款。我正在使用带卡 token 的费用。我已经使用 checkoutkit.js 生成了卡 token 。并将该 token 传递给我的 Cont
我已经设法让 Stripe Checkout 使用 PHP 工作。但我想摆脱最初的 Stripe Button,它通常显示“继续付款”或“用卡付款”。我只是想链接我网站上的按钮以直接转到结帐弹出窗口。
我需要设置 Magento 的订单成功页面 /checkout/onepage/success/ 的样式,但因为它在没有订单 session 时重定向,所以我无法刷新页面来检查我的更改! 有人知道如何
我必须检查一些代码并运行它。我有网址: svn+ssh://myuser@www.myclient.com/home/svn/project/trunk 我有一个包含他们私钥的文件。我该如何获取此代码
我带着一个我一直为之疯狂的问题来找你,我正在为客户构建一个 woocommerce,但是当我在购物车上并单击结账时,表单变为“白色”,然后去结账,结账时,当页面加载时,一个表单是“白色”,当我点击“进
我使用过 paypal 快速结账沙盒,但是当我点击购买某物时,paypal 中没有显示任何价格或商品名称。 在我的页面上,我放了这个表格: 我已经将来自 paypal 的这两个代码包含到我的脚本
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 3 年前。 Improve
我遇到了一个问题,我使用 tableview 作为侧边栏来显示应用程序中的某些 Controller 。尝试预设 Adyen 结帐付款时收到错误,提示我无法使用多重展示,我的问题是,我该如何解决此问题
在 WooCommerce 中,每当选择“送货到家”时,我都会尝试隐藏公司名称字段。我尝试了很多不同的事情。 这是我最近的尝试: add_filter('woocommerce_checkout_fi
我正在尝试设置 Stripe 结账,以便我可以将我的服务器端客户邮政编码/邮政编码传递给 Stripe 结账。看起来它应该很简单,但我无法让它工作! 最简单的是,我使用的代码是: 交易工作正常
对于 AJAX 来说是全新的,所以我很难找到适合我的具体情况的资源。 我正在尝试使用 MYSQL 数据库构建一个简单的结账系统,其表布局如下: 现在我的网站布局如下: 带有“ checkin ”或“
我需要在我的自定义表单中添加一个额外的字段,我想添加信用卡的名称。 我尝试了以下方式: var cardNameElement = elements.create('cardName', { st
我想在 Magento/checkout/onepage/中隐藏“小计”行,并仅显示“总计”行。 我怎样才能做到这一点? 非常感谢 最佳答案 我刚刚将位于 app/design/frontend/ba
我是一名优秀的程序员,十分优秀!