WooCommerce új mező hozzáadása – Közösségi adószám

Többször is felmerült már fórumokon, csoportokban, hogy miként tudunk új mezőt hozzáadni a Pénztár oldalhoz ahol megadjuk a vásárláshoz szükséges adatainkat.

Legfőképp a közösségi adószám mezőről szól a dolog, így bemutatnám, hogy miként tudjuk azt hozzáadni az oldalunkhoz.

  1. lépés: Lépj a WP-Adminba, majd a Megjelenés -> Szerkesztő menübe
    wp1
  2.  lépés: Válaszd ki jobb oldalon a functions.php-twp2
  3. lépés: Illeszd be a következő kódot a php végére, de még a php záró tag „?>” elé
     
    /* ***Hozzáadjuk az új mezőt*** */
    add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
     
    // Our hooked in function - $fields is passed via the filter!
    function custom_override_checkout_fields( $fields ) {
         $fields['billing']['woo_kozzossegi']['label'] = 'Közösségi adószám';
         return $fields;
    }
     
    /* ***Módosítjuk a sorrendet*** */
    add_filter('woocommerce_checkout_fields','reorder_woo_fields');
     
    function reorder_woo_fields($fields) {
            //move these around in the order you'd like
            $fields2['billing']['billing_first_name'] = $fields['billing']['billing_first_name'];
            $fields2['billing']['billing_last_name'] = $fields['billing']['billing_last_name'];
            $fields2['billing']['billing_company'] = $fields['billing']['billing_company'];
            $fields2['billing']['woo_kozzossegi'] = $fields['billing']['woo_kozzossegi'];
            $fields2['billing']['billing_address_1'] = $fields['billing']['billing_address_1'];
            $fields2['billing']['billing_address_2'] = $fields['billing']['billing_address_2'];
            $fields2['billing']['billing_city'] = $fields['billing']['billing_city'];
            $fields2['billing']['billing_postcode'] = $fields['billing']['billing_postcode'];
            $fields2['billing']['billing_country'] = $fields['billing']['billing_country'];
            $fields2['billing']['billing_state'] = $fields['billing']['billing_state'];
            $fields2['billing']['billing_email'] = $fields['billing']['billing_email'];
            $fields2['billing']['billing_phone'] = $fields['billing']['billing_phone'];
     
            //just copying these (keeps the standard order)
            $fields2['shipping'] = $fields['shipping'];
            $fields2['account'] = $fields['account'];
            $fields2['order'] = $fields['order'];
     
            return $fields2;
    }
     
    /* ***Elmentjük az új mezőt*** */
    add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );
     
    function my_custom_checkout_field_update_order_meta( $order_id ) {
        if ( ! empty( $_POST['woo_kozzossegi'] ) ) {
            update_post_meta( $order_id, 'billing_woo_kozzossegi', sanitize_text_field( $_POST['woo_kozzossegi'] ) );
        }
    }
    

Most már megjelenik a Pénztár oldalon az új mező, de még nem jött létre a rendszerbe. Adj le egy próba rendelést az új mező kitöltésével. (Addig ne lépj tovább)

Hozzáadás a Rendelések oldal egy új oszlopába:

Telepítsd a következő plugint: Admin Columns

wp3Telepítés után menj a WooCommerce -> Rendelések oldalra és válaszd az oszlopok szerkesztése opciót.

Alul kattints az Oszlop hozzáadása gombra:

wp4Az alábbi szerint állítsd be a mezőket:

wp5Végül jobb fent mentsd el a beállításokat:

wp6Ekkor a WooCommerce -> Rendelések oldalon már látnod kell az előző rendelésben leadott Közösségi Adószámot.

Ha szeretnéd, hogy a WooCommerce PDF Invoices & Packing Slips bővítménybe is bekerüljön az új mező, akkor töröld le a bővítményt és ezt a verziót telepítsd:

Letöltés

Nyilván nem tudom állandóan frissíteni, de ha jeleztek kommentben, akkor mindenképp fogom.

WordPress – WooCommerce – Termék duplázódás a kosárban

Egy olyan hibába ütköztem, hogy ha kosárba teszek valamit, majd a kosárba megyek, akkor megduplázza azt a terméket amit utoljára a kosárba tettem.

A Woo weboldalán találtam rá a hiba okára:

Double add to cart issues

Check your page source for any empty background-image (css) properties, or img and link tags with empty src/href attributes. These can cause pages to load multiple times.

Mivel belenyúltam több helyen is a témába HTML és CSS szinten, így tudtam, hogy én hibáztam, de nem találtam meg a hibát és mivel nem olyan sok módosítás volt, így letöröltem a témát. Feltettem az eredetit és voilà jó is lett.

Csak ügyesen az üres attribútumokkal 🙂

WooCommerce – Árak csak vásárlóknak

A kód beillesztésével a shop főoldalon és terméknézetben, csak a Vásárló (Customer) szerepkörrel rendelkezők látják az árakat.
Aki regisztrál az oldalra alapértelmezetten Feliratkozó (Subscriber) szerepkörbe kerül.

Hasznos kiegészítő nagykerek számára.

A kódot a téma mappájában lévő function.php fájlba kell bemásolni.


add_filter('woocommerce_get_price_html','members_only_price');
function members_only_price($price){

if(is_user_logged_in()){

	global $wp_roles;

	foreach ( $wp_roles->role_names as $role => $name ) :

		if ( current_user_can( $role ) )
		{
			if ($role == 'customer')
				return $price;
			else{
				echo 'A fiókod még nem erősítettük meg.';
				remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
				remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
				remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );}
		}
		
	endforeach;
}
else {
	remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
	remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
	remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );}
}