Sklep internetowy oparty o Woocommerce, pomimo wielu zalet jakimi niewątpliwie jest prostota i łatwość wdrożenia, jest bardzo ograniczony. Już po chwili zdamy sobie sprawę, że rejestrujący się w naszym sklepie klienci nie mają możliwości podania nam swojego NIPu i tym samym wyboru sposobu rozliczenia. Rozwiązanie tego problemu jest proste - wtyczka, dodają pole NIP do sklepu Woocommerce. Jeśli jednak mamy trochę umiejętności programistycznych i nie przeraża nas wizja stworzenia wtyczki do WordPressa - możemy zrobić to sami.

Pierwszym miejscem, w którym pole NIP powinno się pojawić jest formularz potwierdzania zamówienia. Funkcja, która wyświetli potrzebne nam pole wygląda tak:

function woocommerce_nip_checkout_field($checkout)
{
echo '<div id="my_custom_checkout_field">';
woocommerce_form_field('field_nip', array(
'type' => 'text',
'class' => array('my-field-class form-row-first'),
'label' => __('Potrzebujesz faktury?'),
'placeholder' => __('Podaj NIP'),
),
$checkout->get_value('field_nip'));
echo '</div>';
}

Aby jednak wyświetlić ją w odpowiednim miejscu, potrzebujemy dodatkowej linijki kodu:
add_action('woocommerce_before_checkout_billing_form', 'woocommerce_nip_checkout_field');

add_action() odpowiada za dodanie naszej funkcji do odpowiedniego hooka.

Treść naszego pola po zapisaniu musimy jeszcze dodać do bazy danych:

add_action('woocommerce_checkout_update_order_meta', 'woocommerce_nip_checkout_field_update_order_meta');
function woocommerce_nip_checkout_field_update_order_meta($order_id)
{
if($_POST['field_nip']) update_post_meta($order_id, 'Nip', esc_attr($_POST['field_nip']));

Aby jednak zapisana wartość przydała nam się do czegokolwiek - musimy ją jeszcze jakoś odczytać. Dwie kolejne funkcje dodają podaną wcześniej wartość pola NIP do maili wysyłanych przez sklep (pod danymi kupującego) oraz do panelu edycji zamówienia.
add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys');
function my_custom_checkout_field_order_meta_keys($keys)
{
$keys[] = 'Nip';
return $keys;
}

add_action('woocommerce_admin_order_data_after_billing_address', 'woocommerce_nip_checkout_field_display_admin_order_meta');
function woocommerce_nip_checkout_field_display_admin_order_meta($post)
{
$key_1_values = get_post_meta($post->id, 'Nip');
if (count($key_1_values))
echo '

NIP:
' . $key_1_values[0] . '

';
}


Gdy zbierzemy wszystkie te funkcje w całość i na początku dodamy informacje, które pozwolą wordpressowi rozpoznać nasz plik jako wtyczkę - otrzymamy pełnoprawny plugin, znacząco rozszerzający funkcjonalność naszej witryny.
 /**
* Plugin Name: WooCommerce NIP
* Plugin URI: http://michalmleczko.waw.pl/
* Description: Do każdego zamówienia dodaje opcjonalne pole NIP
* Version: 1.0
* Author: MM Studio
* Author URI: http://michalmleczko.waw.pl/
* Text Domain: woocommerce-nip
* Domain Path: /lang
*/

Tak utworzony plik woocommerce-nip.php wystarczy umieścić w naszym sklepie internetowym w folderze wp-content\plugins\woocommerce-nip i uruchomić w kokpicie - gotowe!

Oczywiście, możemy tez pobrać i zainstalować gotowy moduł - serdecznie zapraszam!