Lägg till ett anpassat fält i WooCommerce kassa
Ibland kan man ju, av någon anledning, vilja ha ett extra fält i kassan som kunden måste fylla i för att kunna komma vidare. Dessutom vill man ju gärna ha det kopplat till den ordern som kunden lägger. Vad är liksom vitsen med att ha fältet där annars? Jag hjälpte en bekant som jobbar med försäljning via Instagram att lägga in detta fält i kassan. Kunderna måste ange sitt namn på Instagram för att kunna komma vidare.
Det går att lösa, men det kräver att du har ett barntema installerat och aktiverat. Koden nedan snickrade jag ihop när Intertech var tämligen nystartat:
/** * Intertech * Chrille Hedberg * [email protected] */ // Lägger till fältet i checkout add_action( 'woocommerce_after_order_notes', 'intertech_eget_falt_i_kassan' ); function intertech_eget_falt_i_kassan( $checkout ) { woocommerce_form_field( '_anpassat_falt_i_kassa', array( 'type' => 'text', 'class' => array('my-field-class form-row-wide'), 'label' => __('Etikett för fält'), //Byt etikett på fältet här 'placeholder' => __(''), 'required' => 'true', ), $checkout->get_value( '_anpassat_falt_i_kassa' )); echo '</div>'; } // Kollar att något verkligen finns ifyllt i fältet add_action('woocommerce_checkout_process', 'intertech_anpassat_falt_checkup'); function intertech_anpassat_falt_checkup() { if ( ! $_POST['_anpassat_falt_i_kassa'] ) wc_add_notice( __( 'Felmeddelande anges här.' ), 'error' ); //Ange felmeddelande här } // Skriver till meta add_action( 'woocommerce_checkout_update_order_meta', 'intertech_skriv_anpassat_falt_till_meta' ); function intertech_skriv_anpassat_falt_till_meta( $order_id ) { if ( ! empty( $_POST['_anpassat_falt_i_kassa'] ) ) { update_post_meta( $order_id, '_anpassat_falt_i_kassa', sanitize_text_field( $_POST['_anpassat_falt_i_kassa'] ) ); } } // Lägger till funktion i backend, visar i orderhuvud add_action( 'woocommerce_admin_order_data_after_billing_address', 'visa_anpassat_falt_i_admin', 10, 1 ); function visa_anpassat_falt_i_admin($order){ echo '<p><strong>'.__('Rubrik före fält').':</strong><br> ' . get_post_meta( $order->id, '_anpassat_falt_i_kassa', true ) . '</p>'; }
Då kommer du få detta fält i botten på kassan:
Naturligtvis kan du justera rubriken till att vara vad som helst än ”etikett för fält”. Ändrar du ’required’ => ’true’ till ’false’ så är fältet inte obligatoriskt.
Vill du läsa mer om hookar till WooCommerce finns det en hel del i dokumentationen.
Ett annat anpassat fält i WooCommerce kan ju läggas till i administrationen av produkter. Vill du veta hur du lägger till extra fält på produkter kan du läsa denna artikel.
Så enkelt lägger man till ett anpassat fält i WooCommerce. 🙂