Veröffentlicht am Schreib einen Kommentar

Top WooCommerce Snippets, Codeschnipsel

Meine besten WooCommerce Snippets

Top WooCommerce Snippets

WooCommerce erfreut sich schon länger immer größerer Beliebtheit und wird auch zukünftig für viele kleine bis große Shops als Plugin erster Wahl eingesetzt werden. Und wenn ein Produkt sehr beliebt ist, gibt es auch Endlos viele Plugins die die Arbeit mit Onlineshop-Systemen erleichtern.

Doch für viele Funktionserweiterungen bedarf es nicht wirklich ein Plugin und schon gar keines das Geld kostet. In solch einem Fall gibt es Code-Snippets die du entweder in die functions.php schreibst oder ein praktisches Plugin verwendest. In dieser Liste möchte ich dir WooCommerce Snippets zeigen die ich selbst zum Teil einsetze.

Free Plugin: Code Snippets

Code Snippets ist eine einfache, klare und übersichtliche Methode, um deiner Website PHP Code Snippets hinzuzufügen. Es ist nicht mehr nötig, eigene Snippets zur Datei functions.php deines Theme hinzuzufügen.

Installiere das Plugin, aktiviere es und navigiere zur Pluginoberfläche. Erstelle dort für die Übersichtlichkeit für jeden Snippet einen eigenen Eintrag. Mit diesem Plugin kannst du all deine Codeschnipsel organisieren und bei Bedarf aktivieren oder deaktivieren.

Neue Snippets füge ich an oberster Stelle an. So behältst du die Übersicht.

Produkt - Text unter Preis bei bestimmten Produktkategorien

Dieser CSS-Code fügt bei bestimmten Produktkategorien einen Text unter den Preis hinzu

Woocommerce Snippets Text unter Preis bei bestimmten Produktkategorien​
body.product_cat_deine-produktkategorie p.wc-gzd-additional-info::after{content:"Versand durch Fotolabor";} 

Storefront-Theme: Footer-Bar am Smartphone entfernen

Dieser Snippet entfernt die überaus hässliche Footer-Bar aus dem Storefront-Theme auf dem Smartphone.

add_action( 'init', 'fwkart_remove_storefront_handheld_footer_bar' );

function fwkart_remove_storefront_handheld_footer_bar() {
remove_action( 'storefront_footer', 'storefront_handheld_footer_bar', 999 );
} 

Kasse - Hausnummer prüfen und zur Pflicht machen

Das wohl häufigste Problem ist, dass Kunden die Hausnummer vergessen. Dieser eine kleine Fehler kann zu riesigen Problemen beim Versand führen. Dieser Code-Snippet prüft, ob die Hausnummer vergessen wurde und erinnert den Kunden diese anzugeben.

// Prüfung ob die Hausnummer eingetragen wurde

add_action('woocommerce_checkout_process', 'fwkart_hausnummer_pruefen');
 
function fwkart_hausnummer_pruefen() 
{
    global $woocommerce;
 
	if(isset($_POST['billing_address_1']) and $_POST['billing_address_1'] != '')
	{
		if (!preg_match('/([0-9]+)/Uis', $_POST['billing_address_1']))
		{
			if(function_exists('wc_add_notice'))
				wc_add_notice( __('Hast du die Hausnummer im Feld Straße vergessen?'), 'error' );
			else
				$woocommerce->add_error( __('Hast du die Hausnummer im Feld Straße vergessen?') );
		}
	}
   
    if(isset($_POST['ship_to_different_address']))
    {
        if(isset($_POST['shipping_address_1']) and $_POST['shipping_address_1'] != '')
		{
			if (!preg_match('/([0-9]+)/Uis', $_POST['shipping_address_1']))
			{
				if(function_exists('wc_add_notice'))
					wc_add_notice( __('Hast du die Hausnummer im Feld Straße vergessen?'), 'error' );
				else
					$woocommerce->add_error( __('Hast du die Hausnummer im Feld Straße vergessen?') );
			}
		}
    }
} 

Produktbild - imgzoom deaktivieren

So praktisch die Zoom Funktion für das Produktbild auch ist, so sehr nerven kann es. Insbesondere auf dem Smartphone. Dieser WooCommerce Snippet deaktiviert die imgzoom Funktion komplett und die Produktbilder werden via Lightbox geöffnet.

add_action( 'after_setup_theme', 'fwkart_imagezoom_entfernen', 99 );
 
function fwkart_imagezoom_entfernen() { 
remove_theme_support( 'wc-product-gallery-zoom' );
} 

Produktbild - Anzahl der Thumbs

Mit diesem Snippet kannst du die Anzahl der Thumbnails unterhalb des Produktbildes, die Pro Zeile angezeigt werden sollen, bestimmen. Du musst anschließend ggf. die Größe der Thumbnails per CSS anpassen.

add_filter( 'woocommerce_single_product_image_gallery_classes', 'fwkart_5_spalten_produktgalerie' );
 
function fwkart_5_spalten_produktgalerie( $wrapper_classes ) {
$columns = 4; // Ändere dies zu 2, 3, 5, etc. Standard ist 4.
$wrapper_classes[2] = 'woocommerce-product-gallery--columns-' . absint( $columns );

return $wrapper_classes;
} 

Produkt - kostenlos! statt 0,00€

Dieser Snippet sorgt dafür, dass bei Produkten die nichts kosten, kostenlos! angezeigt wird statt der Summe.

add_filter( 'woocommerce_get_price_html', 'fwkart_kostenlos_statt_null_euro', 100, 2 );
  
function fwkart_kostenlos_statt_null_euro( $price, $product ){
 
if ( '' === $product->get_price() || 0 == $product->get_price() ) {
    $price = '<span class="woocommerce-Price-amount amount">kostenlos!</span>';
} 
 
return $price;
} 

Kasse - Adresse2 Feld entfernen

Dieser Snippet entfernt das Adresse2 Feld von der Kasseseite

add_filter( 'woocommerce_checkout_fields' , 'fwkart_adresse_zwei_feld_entfernen' );

function fwkart_adresse_zwei_feld_entfernen( $fields ) {
	unset($fields['billing']['billing_address_2']);
	return $fields;
} 

Account - Benutzername zu Echtname

Mit diesem Snippet wandelst du den Benutzernamen zum Echtnamen um. Das ist insbesondere dann sinnvoll, wenn du deine Kunden mit dem richtigen Namen begrüßen möchtest.

function fwkart_benutzername_zu_echtname( $user_id ) {
$info = get_userdata( $user_id );
$args = array(
'ID' => $user_id,
'display_name' => $info->first_name
);

wp_update_user( $args );
}

add_action('user_register','fwkart_benutzername_zu_echtname'); 

Account - Begrüßung mit Namen

Nutze diesen Shortcut an beliebiger Stelle:

[zeige_echtname] 

und begrüße deine Kunden in deinem Onlineshop mit richtigen Namen. Dir steht hier natürlich deiner Kreativität nichts im Wege. Du kannst auch komplette Texte verfassen die nur für angemeldete Kunden oder nur für Besucher angezeigt werden sollen.

function fwkart_zeige_echtnamen_function( $atts ) {

global $current_user, $user_login;
wp_get_current_user();

add_filter('widget_text', 'do_shortcode');

if ($user_login)
// Text wird nur für eingeloggte Personen angeziegt
return '<span>Hey ' . $current_user->display_name . '. Schön das du zurück bist!</span>';

else

// Text wird nur den Besuchern angezeigt
return '<span>Hey. Schön das du da bist!</span>';
}

add_shortcode( 'zeige_echtname', 'fwkart_zeige_echtnamen_function' ); 

Preise - ab statt von/bis

Die Standard Preisangabe von/bis für Variable Produkte sieht einfach unschön aus. Dieser WooCommerce Code-Schnipsel ändert die Darstellung der Preise zu ab
function fwkart_variation_price_format( $price, $product ) {
    // Normaler Preis
    $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
    $price = $prices[0] !== $prices[1] ? sprintf( __( '<strong>ab</strong> %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
 
    // Sale Preis
    $prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
    sort( $prices );
    $saleprice = $prices[0] !== $prices[1] ? sprintf( __( '<strong>ab</strong> %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
 
    if ( $price !== $saleprice ) {
        $price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
    }
   
    return $price;
}
add_filter( 'woocommerce_variable_sale_price_html', 'fwkart_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'fwkart_variation_price_format', 10, 2 ); 

Footer - Jahreszahl anzeigen

Nutze diesen Shortcut an beliebiger Stelle:

[jahreszahl] 
Wenn du im Footer oder an anderer Stelle die aktuelle Jahreszahl 2021 anzeigen möchtest, löst dieser Snippet das Problem.
add_filter('widget_text', 'do_shortcode');

function fwkart_year_shortcode() {
	$year = date_i18n('Y');
	return $year;
}

add_shortcode('jahreszahl', 'fwkart_year_shortcode'); 

Variable Produkte - Custom Field Variation Beschreibung

Mit diesem umfangreichen WooCommerce Snippet erstellst du benutzerdefinierte Felder für variable Produkte. Du kannst die Angaben der benutzerdefinierten Felder beim erstellen und bearbeiten deiner Produkte im Variationen-Tab eingeben und auf der Produktseite anzeigen lassen. Die Angaben werden in deiner WordPress Datenbank gespeichert. Ebenso ist HTML in den Feldern möglich für zB. Hyperlinks.

Bitte versuche unbedingt den Code zu verstehen und passe den PHP Code nach deinen Bedürfnissen an.

Custom Field Variation Beschreibung
add_action( 'woocommerce_product_after_variable_attributes', 'variation_versandkosten_fields', 10, 3 );
add_action( 'woocommerce_save_product_variation', 'save_variation_versandkosten_fields', 10, 2 );
add_filter( 'woocommerce_available_variation', 'load_variation_versandkosten_fields' );

add_action( 'woocommerce_product_after_variable_attributes', 'variation_produktion_fields', 10, 3 );
add_action( 'woocommerce_save_product_variation', 'save_variation_produktion_fields', 10, 2 );
add_filter( 'woocommerce_available_variation', 'load_variation_produktion_fields' );

add_action( 'woocommerce_product_after_variable_attributes', 'variation_hinweis_fields', 10, 3 );
add_action( 'woocommerce_save_product_variation', 'save_variation_hinweis_fields', 10, 2 );
add_filter( 'woocommerce_available_variation', 'load_variation_hinweis_fields' );


/* ANFANG Versandkosten Feld */
/* Erzeugt ein Feld mit der Bezeichnung Versandkosten */
function variation_versandkosten_fields( $loop, $variation_data, $versandkostenvariation ) {
    woocommerce_wp_text_input(
        array(
            'id'            => "fwkart_versandkosten_field{$loop}",
            'name'          => "fwkart_versandkosten_field[{$loop}]",
            'value'         => get_post_meta( $versandkostenvariation->ID, 'fwkart_versandkosten_field', true ),
            'label'         => __( 'Versandkosten', 'woocommerce' ),
            'desc_tip'      => true,
            'description'   => __( 'Versandkosten.', 'woocommerce' ),
            'wrapper_class' => 'form-row form-row-full',
        )
    );
}

/* Speichert die Informationen aus dem Feld Versandkosten in der Datenbank */
function save_variation_versandkosten_fields( $variation_id, $loop ) {
    $text_field = $_POST['fwkart_versandkosten_field'][ $loop ];

    if ( ! empty( $text_field ) ) {
        update_post_meta( $variation_id, 'fwkart_versandkosten_field', wp_kses_post( $text_field ));
    }
}

/* Lädt die Informationenaus dem Feld Versandkosten auf der Produktseite */
function load_variation_versandkosten_fields( $versandkostenvariation ) {
    $versandkostenvariation['fwkart_versandkosten_field'] = get_post_meta( $versandkostenvariation[ 'variation_id' ], 'fwkart_versandkosten_field', true );

    return $versandkostenvariation;
}
/* ENDE Versandkosten */


/* ANFANG Produktionshinweis Feld */
/* Erzeugt ein Feld mit der Bezeichnung Produktionshinweis */
function variation_produktion_fields( $loop, $variation_data, $produktionvariation ) {
	woocommerce_wp_text_input(
        array(
            'id'            => "fwkart_produktion_field{$loop}",
            'name'          => "fwkart_produktion_field[{$loop}]",
            'value'         => get_post_meta( $produktionvariation->ID, 'fwkart_produktion_field', true ),
            'label'         => __( 'Produktionshinweis', 'woocommerce' ),
            'desc_tip'      => true,
            'description'   => __( 'Produktionshinweis.', 'woocommerce' ),
            'wrapper_class' => 'form-row form-row-full',
        )
    );
}

/* Speichert die Informationen aus dem Feld Produktionshinweis in der Datenbank */
function save_variation_produktion_fields( $variation_id, $loop ) {
    $text_field = $_POST['fwkart_produktion_field'][ $loop ];

    if ( ! empty( $text_field ) ) {
        update_post_meta( $variation_id, 'fwkart_produktion_field', wp_kses_post( $text_field ));
    }
}

/* Lädt die Informationenaus dem Feld Produktionshinweis auf der Produktseite */
function load_variation_produktion_fields( $produktionvariation ) {
    $produktionvariation['fwkart_produktion_field'] = get_post_meta( $produktionvariation[ 'variation_id' ], 'fwkart_produktion_field', true );

    return $produktionvariation;
}
/* ENDE Produktionshinweis */


/* ANFANG Hinweis Feld */
/* Erzeugt ein Feld mit der Bezeichnung Hinweis */
function variation_hinweis_fields( $loop, $variation_data, $hinweisvariation ) {
    woocommerce_wp_text_input(
        array(
            'id'            => "fwkart_hinweis_field{$loop}",
            'name'          => "fwkart_hinweis_field[{$loop}]",
            'value'         => get_post_meta( $hinweisvariation->ID, 'fwkart_hinweis_field', true ),
            'label'         => __( 'Hinweis', 'woocommerce' ),
            'desc_tip'      => true,
            'description'   => __( 'Hinweis.', 'woocommerce' ),
            'wrapper_class' => 'form-row form-row-full',
        )
    );
}

/* Speichert die Informationen aus dem Feld Hinweis in der Datenbank */
function save_variation_hinweis_fields( $variation_id, $loop ) {
    $text_field = $_POST['fwkart_hinweis_field'][ $loop ];

    if ( ! empty( $text_field ) ) {
        update_post_meta( $variation_id, 'fwkart_hinweis_field', wp_kses_post( $text_field ));
    }
}

/* Lädt die Informationenaus dem Feld Hinweis auf der Produktseite */
function load_variation_hinweis_fields( $hinweisvariation ) {     
    $hinweisvariation['fwkart_hinweis_field'] = get_post_meta( $hinweisvariation[ 'variation_id' ], 'fwkart_hinweis_field', true );

    return $hinweisvariation;
}
/* ENDE Hinweis */ 

Textarea statt Input-Feld

Wenn du statt einem normalen Input-Feld ein Textarea erzeugen möchtest, suche im Code des jeweiligen Feldes nach:

woocommerce_wp_text_input 
und ersetze es mit:
woocommerce_wp_textarea_input 

Template Datei anpassen

Als zweiten Schritt musst du eine WooCommerce Template Datei deinem Child-Theme hinzufügen da wir dieses bearbeiten müssen. Wie du ein Child-Theme erstellst, erfährst du auf dieser Seite gut erklärt.

Navigiere auf deinem FTP zu: /wp-content/plugins/woocommerce/templates/single-product/add-to-cart/

Kopiere die variation.php zu deinem Child-Theme: /wp-content/themes/DEIN-CHILD-THEME/woocommerce/single-product/add-to-cart/

Öffne die variation.php im Editor bzw. einem Programm deiner Wahl und füge an gewünschter Stelle diese 3 Variablen hinzu:

{{{ data.variation.fwkart_versandkosten_field }}}
{{{ data.variation.fwkart_produktion_field }}}
{{{ data.variation.fwkart_hinweis_field }}} 

Speichere die Datei, lade diese auf deinen FTP und wenn du alles richtig gemacht hast, kannst du jetzt benutzerdefinierte Felder in deinen Variationen verwenden.

Produkt - Menge vor quantity Feld

Dieser Snippet fügt vor dem Quantity Feld das Wort Menge hinzu

WooCommerce Snippets Menge vor quantity Feld
add_action( 'woocommerce_before_add_to_cart_quantity', 'fwkart_menge_vor_qty' );
 
function fwkart_menge_vor_qty() {
 echo '<div class="qty">Menge: </div>'; 
} 
div.qty{
    float:left;
    padding:10px 10px 10px 0px;
} 

Produkt - Durchgestrichener alter Preis, wenn Rabatt aktiviert ist

Dieser Snippet streicht den alten Preis durch wenn ein Rabatt aktiviert ist

add_filter( 'woocommerce_cart_subtotal', 'fwkart_durchgestrichen_wenn_rabatt', 99, 3 );
 
function fwkart_durchgestrichen_wenn_rabatt( $cart_subtotal, $compound, $obj ){
global $woocommerce;
if ( $woocommerce->cart->get_cart_discount_total() <> 0 ) {
$new_cart_subtotal = wc_price( WC()->cart->subtotal - $woocommerce->cart->get_cart_discount_tax_total() - $woocommerce->cart->get_cart_discount_total() );
$cart_subtotal = sprintf( '<del>%s</del> <b>%s</b>', $cart_subtotal , $new_cart_subtotal );
}
return $cart_subtotal;
} 

Automatisch Wörter oder Sätze übersetzen lassen

Mit diesem Snippet übersetzt oder ersetzt du dynamisch erzeugten Texte aus WordPress/WooCommerce und Plugins.

add_filter('gettext', 'translate_text',999);
add_filter('ngettext', 'translate_text',999);

function translate_text($translated) {
$translated = str_ireplace('In stock', 'Auf Lager', $translated);
$translated = str_ireplace('Subtotal', 'Zwischensumme', $translated);
$translated = str_ireplace('Coupon', 'Gutschein', $translated);

return $translated;
} 

Produkt A in den Warenkorb legen, fügt Produkt B automatisch hinzu

Dieser WooCommerce Snippet legt automatisch Produkt B in den Warenkorb wenn Produkt A hinzugefügt wurde. Die IDs musst du selbstverständlich anpassen. Die Produkt-ID findest du in der URL wenn du ein Produkt bearbeitest.

add_action( 'woocommerce_add_cart_item_data', function( $cart_item_data, $product_id ) {

	// Wenn Produkt A mit ID 617 im Warenkorb liegt, wird Produkt B mit ID 115 automatisch dem Warenkorb hinzugefügt.
	if ( 617 == $product_id ) {
		WC()->cart->add_to_cart( 115 );
	}

}, 10, 2 ); 

Custom class="" zu body hinzufügen

Hin und wieder kommt es vor, das eine bestimmte Klasse benötigt wird um Elemente auf bestimmten Seiten auszublenden oder anderweitig per CSS anzupassen. Dieser Snippet fügt dem <body> eine neue, selbst definierte Klasse hinzu. Ändere dazu irgend_etwas mit deiner neuen Klasse.

add_filter( 'body_class','fwkart_body_classes' );
function fwkart_body_classes( $classes ) {
 
    $classes[] = 'irgend_etwas';
 
    return $classes;
 
} 
Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.