我正在try 在WooCommerce中实现一个功能.我有两种运输方式.默认值是固定费率,另一个是本地拾取.
当 Select 本地收件送货方式时,我想在其下方显示一个 Select 下拉列表.如果再次 Select 统一运费运输方法,则应隐藏 Select 下拉列表.
我try 了以下方法来实现此功能,但未起作用:无论我是否 Select 本地收件运输方法, Select 下拉列表始终显示
function add_custom_select_box($method, $index) {
if ($method->method_id == 'local_pickup') {
echo '<select name="local_pickup_store" id="local_pickup_store" onchange="updateSelectedStore()">
<option value="choose_store">choose store</option>
<option value="store1">store1</option>
<option value="store2">store2</option>
</select>';
echo '<div id="selected_store_info"></div>';
}
}
add_action('woocommerce_after_shipping_rate', 'add_custom_select_box', 10, 2);
function save_local_pickup_store($order) {
if (isset($_POST['local_pickup_store'])) {
$local_pickup_store = sanitize_text_field($_POST['local_pickup_store']);
$order->update_meta_data('_local_pickup_store', $local_pickup_store);
}
}
add_action('woocommerce_checkout_create_order', 'save_local_pickup_store');
function display_local_pickup_store($order) {
$local_pickup_store = $order->get_meta('_local_pickup_store');
if ($local_pickup_store) {
echo '<p><strong>store:</strong> ' . esc_html($local_pickup_store) . '</p>';
}
}
add_action('woocommerce_admin_order_data_after_billing_address', 'display_local_pickup_store');
add_action('wp_footer', 'custom_local_pickup_script');
function custom_local_pickup_script() {
?>
<script>
function updateSelectedStore() {
var selectedStore = document.getElementById('local_pickup_store').value;
var selectedStoreInfo = document.getElementById('selected_store_info');
if (selectedStore !== 'choose_store') {
selectedStoreInfo.innerHTML = '<p><strong>Selected Store:</strong> ' + selectedStore + '</p>';
} else {
selectedStoreInfo.innerHTML = '';
}
}
</script>
<?php
}