Sprzedaż wirtualnych produktów w WooCommerce: jak pozbyć się adresu wysyłki z formularza zamówienia

Jako konsument spotykam się czasami z sytuacją, gdy podczas zakupów w sklepie internetowym muszę podać pełne dane adresowe, nawet jeśli zamawiam produkt cyfrowy. Bywa to irytujące dla klientów, a co bardziej ostrożni mogą zrezygnować z zakupów w takim sklepie.

Ponieważ specjalizuję się w WordPressie, pokażę Ci, jak zmodyfikować formularz WooCommerce, aby nie zbierał danych adresowych i nie denerwował Twoich klientów.

Zmiany najlepiej wnieść w motywie potomnym. O tym, jak go utworzyć, pisałam w jednym z wcześniejszych wpisów. Jeśli jednak czujesz, że utworzenie motywu potomnego Cię przerasta, skorzystaj z darmowej wtyczki Code Snippets.

W pliku functions.php w motywie potomnym umieść następujący kod:

add_filter( 'woocommerce_cart_needs_shipping', 'wc_no_shipping' );
function wc_no_shipping( $x ) {
    return false;
}

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
    $fields['order']['order_comments']['placeholder'] = 'Uwagi do zamówienia.';
    return $fields;
}

Funkcja wc_no_shipping usunie checkbox "Wysłać na inny adres?", natomiast funkcja custom_override_checkout_fields zmieni tekst w okienku "Uwagi do zamówienia (opcjonalne)" z "Uwagi do zamówienia, np. informacje o dostarczeniu przesyłki." na "Uwagi do zamówienia." (bo przecież nie dostarczasz przesyłki, więc po co mącić klientowi w głowie?).

Już jest nieźle, prawda?

Kolejna rzecz, którą można zrobić, aby klient nie musiał wypełniać zbyt wielu okienek, to oznaczenie pól adresowych jako pola opcjonalne:

add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );
function custom_override_default_address_fields( $address_fields ) {
  $address_fields['address_1']['required'] = false;
  $address_fields['address_2']['required'] = false;
  $address_fields['city']['required'] = false;
  $address_fields['country']['required'] = false;
  $address_fields['postcode']['required'] = false;
  return $address_fields;
}

A może by tak całkowice zrezygnować z pola z krajem? Jest na to prosty sposób:

add_filter( 'woocommerce_checkout_fields' , 'custom_unset_checkout_fields' );
function custom_unset_checkout_fields( $fields ) {
  unset($fields['billing']['billing_country']);
  return $fields;
}

Więcej o możliwościach dostosowania formularza zamówienia WooCommerce do własnych upodobań znajdziecie na stronie WooCommerce.

Pani Marta
Jestem Marta. Pani Marta. I piszę o rzeczach, które inspirują mnie i ciekawią w pracy web developera. Na moim blogu znajdziesz porady dotyczące WordPressa i programowania stron, a także moje osobiste przemyślenia na najróżniejsze tematy.