- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将我的自定义字段保存到新用户元数据中。我的自定义字段 = T.C.金利克没有
代码行开头的函数用于将字段添加到成员(member)部分。
我主要想做的是当涉及到注册用户的结帐页面时,自动拉取我在顶部控制的自定义区域
/** TC Kimlik No Ekleme **/
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$fields['billing']['shipping_tc'] = array(
'label' => __('TC Kimlik No', 'woocommerce'),
'placeholder' => _x('Fatura İçin Gerekli', 'placeholder', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}
/** TC Doğrula **/
function isTcKimlik($tc){
if(strlen($tc) < 11){ return false; }
if($tc[0] == '0'){ return false; }
$plus = ($tc[0] + $tc[2] + $tc[4] + $tc[6] + $tc[8]) * 7;
$minus = $plus - ($tc[1] + $tc[3] + $tc[5] + $tc[7]);
$mod = $minus % 10;
if($mod != $tc[9]){ return false; }
$all = '';
for($i = 0 ; $i < 10 ; $i++){ $all += $tc[$i]; }
if($all % 10 != $tc[10]){ return false; }
return true;
}
/** TC Kimlik Noyu Doğrula **/
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
$tcno = $_POST['shipping_tc'];
if(!isTcKimlik($tcno))
wc_add_notice( __( 'Lütfen Geçerli TC Kimlik No Girin.' ), 'error' );
}
/** Admin Sipariş Detayında Fatura Bilgilerinde TC No'yu Görebilmesi İçin**/
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order){
echo '<p><strong>'.__('TC Kimlik No').':</strong> ' . get_post_meta( $order->get_id(), '_shipping_tc', true ) . '</p>';
}
add_filter( 'woocommerce_checkout_fields', 'misha_email_first' );
function misha_email_first( $checkout_fields ) {
$checkout_fields['billing']['shipping_tc']['priority'] = 20;
return $checkout_fields;
}
// Custom function to display the Billing Address form to registration page
add_action('woocommerce_register_form_start','zk_add_billing_form_to_registration');
function zk_add_billing_form_to_registration(){
$checkout = WC()->checkout;
foreach ( $checkout->get_checkout_fields( 'billing' ) as $key => $field ) :
if($key!='billing_email')
woocommerce_form_field( $key, $field, $checkout->get_value( $key ) );
endforeach;
}
// Custom function to save Usermeta or Billing Address of registered user
add_action('woocommerce_created_customer','zk_save_billing_address');
function zk_save_billing_address($user_id){
$address = $_POST;
foreach ($address as $key => $field){
// Only billing fields values
if( strpos( $key, 'billing_' ) !== false ){
// Condition to add firstname and last name to user meta table
if($key == 'billing_first_name' || $key == 'billing_last_name'){
$new_key = str_replace( 'billing_', '', $key );
update_user_meta( $user_id, $new_key, $_POST[$key] );
}
update_user_meta( $user_id, $key, $_POST[$key] );
}
}
}
add_action( 'woocommerce_checkout_update_user_meta', 'reigel_woocommerce_checkout_update_user_meta', 10, 2 );
// Checking & validation of the additional fields in registration form.
add_action('woocommerce_register_post','zk_validation_billing_address', 10, 3 );
function zk_validation_billing_address( $username, $email, $validation_errors ){
foreach ($_POST as $key => $field) :
// Validation: Required fields
if( strpos( $key, 'billing_' ) !== false ){
if($key == 'billing_country' && empty($field) ){
$validation_errors->add( $key.'_error', __( 'Lütfen ülke seçimi yapınız.', 'woocommerce' ));
}
if($key == 'billing_first_name' && empty($field) ){
$validation_errors->add( $key.'_error', __( 'Adınızı giriniz.', 'woocommerce' ) );
}
if($key == 'billing_last_name' && empty($field) ){
$validation_errors->add( $key.'_error', __( 'Soyadınızı giriniz.', 'woocommerce' ) );
}
if($key == 'billing_address_1' && empty($field) ){
$validation_errors->add( $key.'_error', __( 'Adresinizi giriniz.', 'woocommerce' ) );
}
if($key == 'billing_city' && empty($field) ){
$validation_errors->add( $key.'_error', __( 'Lütfen şehir seçimi yapınız.', 'woocommerce' ) );
}
if($key == 'billing_state' && empty($field) ){
if(count( WC()->countries->get_states($_POST['billing_country']) ) > 0)
$validation_errors->add( $key.'_error', __( 'Mahalle girişi yapınız.', 'woocommerce' ) );
}
if($key == 'billing_postcode' && empty($field) ){
$validation_errors->add( $key.'_error', __( 'Posta kodu girişi yapınız.', 'woocommerce' ) );
}
/*
if($key == 'billing_email' && empty($field) ){
$validation_errors->add( $key.'_error', __( 'Please enter billing email address.', 'woocommerce' ) );
}
*/
if($key == 'billing_phone' && empty($field) ){
$validation_errors->add( $key.'_error', __( 'Lütfen telefon numaranızı giriniz.', 'woocommerce' ) );
}
if($key == 'shipping_tc' && empty($field) ){
$validation_errors->add( $key.'_error', __( 'TC.', 'woocommerce' ) );
}
}
endforeach;
}
add_filter( 'woocommerce_billing_fields', 'sv_required_billing_fields' );
function sv_required_billing_fields( $fields ) {
$fields['billing_phone']['required'] = true;
$fields['billing_city']['required'] = true;
$fields['billing_country']['required'] = true;
$fields['billing_address_1']['required'] = true;
return $fields;
}
最佳答案
根据您的其他问题回答 Save WooCommerce checkout custom field as user meta data ,即解决将字段数据保存为用户元数据和订单元数据。
现在要进行字段验证,您将使用:
function is_billing_identifier_valid( $tc ){
if (strlen($tc) < 11 || $tc[0] == '0')
return false;
$plus = ($tc[0] + $tc[2] + $tc[4] + $tc[6] + $tc[8]) * 7;
$minus = $plus - ($tc[1] + $tc[3] + $tc[5] + $tc[7]);
$all = '';
if ( $minus % 10 != $tc[9])
return false;
for ($i = 0 ; $i < 10 ; $i++)
$all += $tc[$i];
return $all % 10 != $tc[10] ? false : true;
}
add_action('woocommerce_checkout_process', 'custom_checkout_field_validation');
function custom_checkout_field_validation() {
if( isset($_POST['billing_identifier']) && ! is_billing_identifier_valid( esc_attr($_POST['billing_identifier']) ) ) {
wc_add_notice( __( 'Lütfen Geçerli TC Kimlik No Girin.' ), 'error' );
}
}
代码进入事件子主题(或事件主题)的 functions.php 文件。它应该有效。
关于php - WooCommerce 结帐自定义字段条件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66968303/
我似乎记得在某个地方看到过这个,但在我的一生中,搜索并没有出现我正在寻找的结果。这是我想要的: 我有一个项目存储库。我想将其他 svn 存储库中的库包含在我的项目中。当我对主项目执行 SVN 提交时,
我正在 Magento 中寻找我的结帐购物车页面的解决方案。当我将商品放入购物车时,购物车页面变得空白。!! 我已经尝试了几个选项,但它仍然显示为空白。我启用了 cookie 等,但仍然没有运气。我正
我有一个文件,其中包含 CVS 存储库中包含的许多标签。有没有一种方法可以只使用这些标签 checkout 所有文件及其相关目录,而无需 checkout 整个存储库? 我没有存储库中的目录列表,因此
我正在尝试为客户站点开发一个结帐系统,我想知道执行此操作的最佳方法。请让我知道我在下面尝试过的任何替代方法。 目前我有: 1) 购物车中的商品保存到 $_SESSION 变量 2) 当用户按下“结帐”
我真的很想为我正在开发的市场使用 Paypal。我需要允许用户输入他们的 paypal 电子邮件地址,每当客户购买该用户的产品时,我都会收取少量费用,然后剩下的钱会转到列出该产品的用户。 哪种 pay
有没有办法让输入信用卡信息的部分默认打开,而不是输入paypal信息的部分? 我真的很需要这个,但是到处都找不到! 最佳答案 做到这一点的唯一方法是使用 Express Checkout .在你的Se
我正在使用在 node 下运行的 Stripe Subscription。 我想创建一个预先填写电子邮件地址的新结帐。所以我尝试在客户端做: // Setup event handler to cre
我正在尝试使用 Checkout Dependencies Leiningen 中的功能用于使用 Flambo checkout 的项目.我的 project.clj 看起来像这样: (defproj
谁能告诉我如何使用 Maven 从 SVN 进行结账和进一步更新?我阅读了 maven.apache.org 上的文档,但似乎我对此太愚蠢了,因为我无法理解如何使用 scm:checkout 和 sc
我在 onepage/checkout/success 页面上遇到了麻烦,因为我想将根模板从 2columns-right.phtml 设置为 1column.phtml。应该问题不大... 我得到了
我使用 subversion 创建新存储库的正常工作流程是创建一个新存储库,检查存储库根目录,创建我的分支标签和主干文件夹,并将我的初始文件放在主干中。然后我提交这个“初始导入”,从我的硬盘驱动器中删
我已经使用以下代码向管理员用户添加了自定义元字段:`` function wporg_usermeta_form_field_birthday( $user ) { ?>
我想将 CVS 模块深处的特定文件夹 check out 到我的 Hudson/Jenkins 工作区中。剥离其他选项(例如修剪、分支等),CVS 命令是... cvs checkout -d wor
我正在尝试 git checkout Jenkinsfile跟随方式 stage ('Repo Checkout') { steps { dir('My-Repo') {
我们的大多数项目都使用很多通用代码。我们(最终)正朝着以统一方式管理共享代码的系统迈进。我们将共享代码视为 SVN 中的一个单独项目,然后将其作为外部引用。然而,我们倾向于在项目开发时将外部库指向开发
我已经使用 node.js 实现了 strip 结帐 product.photo是 https://test.s3.amazonaws.com/2213131 const session = awai
将产品添加到购物车时出现问题,它会转到结帐页面,但除了周围的页眉/页脚模板之外,该页面是空的。 我已经尝试了我能想到的一切,它不是主题(发生在所有主题上),我尝试禁用编译器和刷新缓存等.. 服务器日志
有什么方法可以禁用 Magento 中的购物卡/结账/送货选项吗? 我正在开发一个产品比较网站,其价格是从联属网站列出的。 我实际上并没有在我的网站上销售任何东西。 最佳答案 aDVo,如果禁用以下m
我正在做一个订购冰淇淋的程序,用户首先应该在圆锥体或杯子之间进行选择(作为按钮),当他单击按钮时,总数会显示在文本字段中,然后他可以继续选择口味作为复选框,每当他添加额外的 flavor 等时,总数就
我正在使用 HTML 5 required 属性进行表单验证。现在我想要的是,如果表单已经通过了 HTML 5 验证,它应该将用户带到 strip 结帐(我故意在下面的代码中为 SO 问题 xxx 输
我是一名优秀的程序员,十分优秀!