gpt4 book ai didi

php - 在 WooCommerce Checkout 自定义文本字段中启用日期选择器

转载 作者:行者123 更新时间:2023-12-01 02:27:25 25 4
gpt4 key购买 nike

在 WooCommerce 中,我可以使用我的主题(店面)函数 PHP 中的以下内容将一个字段挂接到我的 WooCommerce 购物车页面并显示正常:

<?
// ADD Custom Fields to Checkout Page
/**
* Add the field to the checkout
**/

add_action('woocommerce_after_order_notes', 'my_custom_checkout_field');

function my_custom_checkout_field( $checkout ) {

date_default_timezone_set('America/Los_Angeles');
$mydateoptions = array('' => __('Select PickupDate', 'woocommerce' ));

echo '<div id="my_custom_checkout_field"><h3>'.__('Delivery Info').'</h3>';

woocommerce_form_field( 'order_pickup_date', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'id' => 'datepicker',
'required' => true,
'label' => __('Delivery Date'),
'placeholder' => __('Select Date'),
'options' => $mydateoptions
),$checkout->get_value( 'order_pickup_date' ));

echo '</div>';
}

/**
* Process the checkout
**/
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
global $woocommerce;

// Check if set, if its not set add an error.
if (!$_POST['order_pickup_date'])
wc_add_notice( '<strong>PickupDate</strong> ' . __( 'is a required field.', 'woocommerce' ), 'error' );
}

/**
* Update the order meta with field value
**/
add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta');

function my_custom_checkout_field_update_order_meta( $order_id ) {
if ($_POST['order_pickup_date']) update_post_meta( $order_id, 'PickupDate', esc_attr($_POST['order_pickup_date']));
}
?>

但是,当您单击该字段时,日期选择器小部件不会启动。我知道 JQuery 需要在 header 中添加以下代码才能工作:

<script>
$( function() {
$( "#datepicker" ).datepicker(); } );
</script>

这对我来说不起作用,所以我想将此功能放入 Storefront 主题中的 checkout.js 文件中,但添加的字段没有日历小部件功能。

其中有很多.js,我需要为包含内容启动一个新的吗?

最佳答案

首先您需要:

  • 入队主 jquery-ui 日期选择器脚本
  • 更改您的自定义脚本,以 jQuery(function($){ 开头,而不是 $(function(){ ...

因此,要为您的自定义文本字段启用datepicker,您的代码将是:

// Register main datepicker jQuery plugin script
add_action( 'wp_enqueue_scripts', 'enabling_date_picker' );
function enabling_date_picker() {

// Only on front-end and checkout page
if( is_admin() || ! is_checkout() ) return;

// Load the datepicker jQuery-ui plugin script
wp_enqueue_script( 'jquery-ui-datepicker' );
}

// Call datepicker functionality in your custom text field
add_action('woocommerce_after_order_notes', 'my_custom_checkout_field', 10, 1);
function my_custom_checkout_field( $checkout ) {

date_default_timezone_set('America/Los_Angeles');
$mydateoptions = array('' => __('Select PickupDate', 'woocommerce' ));

echo '<div id="my_custom_checkout_field">
<h3>'.__('Delivery Info').'</h3>';

// YOUR SCRIPT HERE BELOW
echo '
<script>
jQuery(function($){
$("#datepicker").datepicker();
});
</script>';

woocommerce_form_field( 'order_pickup_date', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'id' => 'datepicker',
'required' => true,
'label' => __('Delivery Date'),
'placeholder' => __('Select Date'),
'options' => $mydateoptions
),$checkout->get_value( 'order_pickup_date' ));

echo '</div>';
}

代码位于事件子主题(或主题)的 function.php 文件中或任何插件文件中。

经过测试并有效。在店面主题上,您将得到:

enter image description here

You may need to style it…

关于php - 在 WooCommerce Checkout 自定义文本字段中启用日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47045814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com