Автозаполнение поля проверки WooCommerce от пользовательской строки запросаJquery

Программирование на jquery
Ответить
Anonymous
 Автозаполнение поля проверки WooCommerce от пользовательской строки запроса

Сообщение Anonymous »

Я создавал кучу кода на автозапроте для Woocommerce, чтобы, когда я заставляю людей из моего программного обеспечения, чтобы получить ссылку на мой сайт, чтобы что -то купить. Но у меня возникли проблемы с работе, даже с инкогнито и URL с фиктивными данными. Если кто -то может сказать мне, что я делаю не так, или мне нужно поместить это в другом месте. < /P>
Мой код: < /p>
function custom_autofill_checkout_fields() {
// Only run on checkout page
if (!is_checkout()) {
return;
}

// Get URL parameters
$autofill_fields = array(
'billing_first_name' => isset($_GET['fname']) ? sanitize_text_field($_GET['fname']) : '',
'billing_last_name' => isset($_GET['lname']) ? sanitize_text_field($_GET['lname']) : '',
'billing_email' => isset($_GET['email']) ? sanitize_email($_GET['email']) : '',
'billing_phone' => isset($_GET['phone']) ? sanitize_text_field($_GET['phone']) : '',
'billing_company' => isset($_GET['company']) ? sanitize_text_field($_GET['company']) : '',
'billing_address_1' => isset($_GET['address1']) ? sanitize_text_field($_GET['address1']) : '',
'billing_address_2' => isset($_GET['address2']) ? sanitize_text_field($_GET['address2']) : '',
'billing_city' => isset($_GET['city']) ? sanitize_text_field($_GET['city']) : '',
'billing_state' => isset($_GET['state']) ? sanitize_text_field($_GET['state']) : '',
'billing_postcode' => isset($_GET['postcode']) ? sanitize_text_field($_GET['postcode']) : '',
'billing_country' => isset($_GET['country']) ? sanitize_text_field($_GET['country']) : '',

// Copy billing to shipping if requested
'ship_to_different_address' => isset($_GET['ship_different']) && $_GET['ship_different'] === '1' ? true : false,

// Shipping fields
'shipping_first_name' => isset($_GET['ship_fname']) ? sanitize_text_field($_GET['ship_fname']) : '',
'shipping_last_name' => isset($_GET['ship_lname']) ? sanitize_text_field($_GET['ship_lname']) : '',
'shipping_company' => isset($_GET['ship_company']) ? sanitize_text_field($_GET['ship_company']) : '',
'shipping_address_1' => isset($_GET['ship_address1']) ? sanitize_text_field($_GET['ship_address1']) : '',
'shipping_address_2' => isset($_GET['ship_address2']) ? sanitize_text_field($_GET['ship_address2']) : '',
'shipping_city' => isset($_GET['ship_city']) ? sanitize_text_field($_GET['ship_city']) : '',
'shipping_state' => isset($_GET['ship_state']) ? sanitize_text_field($_GET['ship_state']) : '',
'shipping_postcode' => isset($_GET['ship_postcode']) ? sanitize_text_field($_GET['ship_postcode']) : '',
'shipping_country' => isset($_GET['ship_country']) ? sanitize_text_field($_GET['ship_country']) : '',

// Order notes
'order_comments' => isset($_GET['notes']) ? sanitize_textarea_field($_GET['notes']) : '',
);

// Add products to cart if product_id is provided
if (isset($_GET['product_id'])) {
$product_id = intval($_GET['product_id']);
$quantity = isset($_GET['quantity']) ? intval($_GET['quantity']) : 1;

// Clear cart first if requested
if (isset($_GET['clear_cart']) && $_GET['clear_cart'] === '1') {
WC()->cart->empty_cart();
}

// Add product to cart
if ($product_id > 0) {
WC()->cart->add_to_cart($product_id, $quantity);
}
}

// Set checkout fields
foreach ($autofill_fields as $field => $value) {
if (!empty($value)) {
WC()->customer->set_props(array($field => $value));
}
}

// Add JavaScript to handle form field autofilling
add_action('wp_footer', 'custom_autofill_checkout_javascript');
}
add_action('wp_loaded', 'custom_autofill_checkout_fields');

/**
* Add JavaScript to ensure the checkout form fields are populated
*/
function custom_autofill_checkout_javascript() {
if (!is_checkout()) {
return;
}

?>

jQuery(document).ready(function($) {
// Get URL parameters
const urlParams = new URLSearchParams(window.location.search);

// Map URL parameters to checkout fields
const fieldMap = {
'fname': '#billing_first_name',
'lname': '#billing_last_name',
'email': '#billing_email',
'phone': '#billing_phone',
'company': '#billing_company',
'address1': '#billing_address_1',
'address2': '#billing_address_2',
'city': '#billing_city',
'state': '#billing_state',
'postcode': '#billing_postcode',
'country': '#billing_country',
'ship_fname': '#shipping_first_name',
'ship_lname': '#shipping_last_name',
'ship_company': '#shipping_company',
'ship_address1': '#shipping_address_1',
'ship_address2': '#shipping_address_2',
'ship_city': '#shipping_city',
'ship_state': '#shipping_state',
'ship_postcode': '#shipping_postcode',
'ship_country': '#shipping_country',
'notes': '#order_comments'
};

// Fill form fields from URL parameters
Object.entries(fieldMap).forEach(([param, selector]) => {
if (urlParams.has(param)) {
$(selector).val(urlParams.get(param)).trigger('change');
}
});

// Handle shipping to different address
if (urlParams.has('ship_different') && urlParams.get('ship_different') === '1') {
$('#ship-to-different-address-checkbox').prop('checked', true).trigger('change');
}

// Ensure fields update when form refreshes
$(document.body).on('updated_checkout', function() {
// Re-apply values after checkout updates
Object.entries(fieldMap).forEach(([param, selector]) => {
if (urlParams.has(param)) {
$(selector).val(urlParams.get(param)).trigger('change');
}
});
});
});



Подробнее здесь: https://stackoverflow.com/questions/795 ... ery-string
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»