Die 31 nützlichsten WooCommerce Snippets aus 2022 für Dich

Keine Kommentare
WooCommerce Snippets: Die nützlichsten Schnipsel für 2022

WooCommerce ist eine tolle Sache, wenn Du Dinge verkaufen willst. Aber was ist, wenn Dir die Standards nicht gefallen und Du einiges anpassen möchtest? Diese Liste mit den besten WooCommerce Snippets aus 2022 hilft dir dabei. Jedes Snippet ist durch uns getestet worden. Wir werden die Liste immer wieder erweitern.

Inhaltsverzeichnis Anzeigen

WooCommerce Standard-Funktionen anpassen oder erweitern

Die Standard-Funktionen von WooCommerce passen nicht für jedermann und jede Aufgabe. Sobald etwas angepasst werden soll, kommt man um den Einsatz von speziellen WooCommerce Snippets nicht herum. Hier kommen also die nützlichsten Schnipsel, die in der functions.php Deines aktiven Child-Themes abgespeichert werden sollten. Du hast noch kein Child-Theme? Dann lies den Beitrag WordPress Child Theme erstellen für Anfänger.

Natürlich kannst Du auch ein eigenes Plugin dafür erstellen.

Bitte beachte: Die Nutzung dieser WooCommerce Snippets geschieht auf eigene Gefahr.

Die Voraussetzungen zum Einsatz:

  • WordPress Version ab 4.6
  • WooCommerce Version ab 3.xx
  • PHP-Version 7.xx

Wichtige Tipps vorab

Vor jeder Änderung sollte ein Backup der functions.php durchgeführt werden. Mache die Änderungen niemals über den WordPress-Editor. Sollte etwas schiefgehen, hast Du keinen Zugriff mehr auf Deine Website. Nutze dafür stets einen FTP-Zugang und tausche die Datei direkt auf Deinem Webhosting / Server aus. Führe die Ergänzungen in einem echten Code-Editor wie zum Beispiel dem kostenlosen Brackets durch, da ein solcher Editor auch eventuelle Code-Fehler anzeigt.

Die WooCommerce Code Snippets:

Die Anzahl der ähnlichen Produkte ändern

Die sogenannten »Related Products« sind eine tolle Sache, allerdings möchte man die Ausgabe dieser ähnlichen Artikel vielleicht etwas beeinflussen. Dieser Code sorgt dafür.

if (!function_exists('evolution_related_products_args') ) {
/**
 * WooCommerce Extra Feature
 * --------------------------
 *
 * Change number of related products on product page
 * Set your own value for 'posts_per_page'
 *
 */ 
function evolution_related_products_args( $args ) {

        $args['posts_per_page'] = 4; // 4 aehnliche Produkte
        $args['columns'] = 4; // in 4 Spalten angezeigt
        return $args;

    }
}
add_filter( 'woocommerce_output_related_products_args', 'evolution_related_products_args' );

Die WooCommerce Loop anpassen

Die Loop von WooCommerce ist immer wieder ein Ärgernis, weil sie niemals die Produkte so anzeigt, wie man es gerade bei einem Projekt benötigt. Das Schöne an der Sache ist, dass es eine relativ einfache Abhilfe gibt. Schaffe dir also Deine eigene Loop.

Anzeige der Produkte in Spalten nebeneinander

Hier bestimmst Du, wie viele Produkte nebeneinander angezeigt werden.

if (!function_exists('evolution_loop_columns') ) :
/**
 * Change number of products per row to 3 | Standard ist 4
 */ 
    function evolution_loop_columns() {
        return 3; // 3 Produkte nebeneinander in einer Spalte
    }

add_filter('loop_shop_columns', 'evolution_loop_columns');
endif;

Anzahl der angezeigten Produkte auf einer Seite

Hiermit kannst Du bestimmen, wie viele Produkte auf einer Seite angezeigt werden sollen.

if (!function_exists('evolution_loop_shop_per_page') ) {
/**
 * Custom Product Cols
 * @return 12 Produkte pro Seite
 */
function evolution_loop_shop_per_page( $cols ) {

        $cols = 12;
        return $cols;

    }
}
add_filter( 'loop_shop_per_page', 'evolution_loop_shop_per_page', 20 );

Telefonnummer im Kassenbereich optional machen

Die Angabe der Telefonnummer im Kassenbereich ist für den Kunden eine Pflichtangabe und definitiv unnötig. Mit diesem WooCommerce Snippet kannst Du die Angabe optional machen.

if (!function_exists( 'evolution_phone_not_required' ) ) :
/**
 * Make the phone number a optional entry
 * 
 * @hooked woocommerce_billing_fields()
 * 
 * @return filter
 */
function evolution_phone_not_required( $address_fields ) {

    $address_fields['billing_phone']['required'] = false;

    return $address_fields;
}
add_filter( 'woocommerce_billing_fields', 'evolution_phone_not_required', 10, 1 );
endif;

Sicherstellen, dass sich Dein Warenkorb aktualisiert, wenn Ajax genutzt wird

Es kann durchaus vorkommen, dass sich der Warenkorb nicht gleich aktualisiert, wenn man Produkte hinzufügt. Das liegt dann an der Übermittelung der Produkte an den Warenkorb mittels Ajax. Damit das sicher passiert, gibt es diesen Code.

<?php
// Ab hier kopieren

if (!function_exists( 'evolution_header_add_to_cart_fragment' ) ) :
/**
 * Ensure cart contents update when products are added to the cart via AJAX
 * 
 * @add_filter woocommerce_add_to_cart_fragments
 */
function evolution_header_add_to_cart_fragment( $fragments ) {

    ob_start();
?>
<a class="cart-contents" href="<?php echo WC()->cart->get_cart_url(); ?>" title="<?php esc_html__( 'Deinen Warenkorb anzeigen', 'evolution' ); ?>"><?php echo sprintf ( _n( '%d item', '%d items','evolution', WC()->cart->get_cart_contents_count() ), WC()->cart->get_cart_contents_count() ); ?> - <?php echo WC()->cart->get_cart_total(); ?></a> 
<?php

    $fragments['a.cart-contents'] = ob_get_clean();

    return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'evolution_header_add_to_cart_fragment' );
endif;

Die Zahlungsart eines Benutzers zur Admin-E-Mail hinzufügen

if (!function_exists( 'evolution_add_payment_method_to_admin_new_order' ) ) :
/**
 * Add user payment method to admin email
 * 
 * @hooked woocommerce_email_after_order_table()
 */
function evolution_add_payment_method_to_admin_new_order( $order, $is_admin_email ) {

    if ( $is_admin_email ) {

        echo '<p><strong>Verwendete Zahlungsart:</strong> ' . $order->payment_method_title . '</p>';

    }
}
add_action( 'woocommerce_email_after_order_table', 'evolution_add_payment_method_to_admin_new_order', 15, 2 );
endif;

Versandkosten ausblenden, wenn kostenlos verfügbar ist

Warum sollten Versandkosten angezeigt werden, wenn der kostenlose Versand für ein Produkt verfügbar ist? Dieses WooCommerce Snippet blendet die Versandkosten aus.

if ( !function_exists( 'evolution_hide_shipping_when_free_is_available' ) ) :
/**
 * Hide shipping rates when free shipping is available.
 * Updated to support WooCommerce 2.6 Shipping Zones.
 *
 * @param array $rates Array of rates found for the package.
 * @return array
 */
    function evolution_hide_shipping_when_free_is_available( $rates ) {
        $free = array();
        foreach ( $rates as $rate_id => $rate ) {
            if ( 'free_shipping' === $rate->method_id ) {
                $free[ $rate_id ] = $rate;
                break;
            }
        }
        return ! empty( $free ) ? $free : $rates;
    }
add_filter( 'woocommerce_package_rates', 'evolution_hide_shipping_when_free_is_available', 100 );
endif;

Prozentuale Ersparnis bei Angeboten anzeigen

Du arbeitest viel mit Angebotspreisen? Dann zeige Deinen Besuchern an, wie viel Prozent sie zum Originalpreis gespart haben.

if ( !function_exists( 'evolution_custom_sales_price' ) ) :
/**
 * Show percent savings on sale - Only for WooCommerce version 3.0+
 * 
 * @add filter to products
 * 
 * @return filter
 */
function evolution_custom_sales_price( $price, $regular_price, $sale_price ) {
    
    $percentage = round( ( $regular_price - $sale_price ) / $regular_price * 100 ).'%';
    
    $percentage_txt =  __(' Save ', 'evolution' ).$percentage;
    
    $price = '<del>' . ( is_numeric( $regular_price ) ? wc_price( $regular_price ) : $regular_price ) . '</del> <ins>' . ( is_numeric( $sale_price ) ? wc_price( $sale_price ) . $percentage_txt : $sale_price . ' ' . $percentage_txt ) . '</ins>';
    return $price;
    
}
add_filter( 'woocommerce_format_sale_price', 'evolution_custom_sales_price', 10, 3 );
endif;

Die Produkt Tabs auf der Produktseite anpassen

Die Produkt Tabs auf der Seite eines einzelnen Produkts kann man komplett an die eigenen Bedürfnisse anpassen. Man kann Tabs entfernen, man kann eigene hinzufügen, sie anders benennen und ebenfalls auch anders sortieren.

WooCommerce Product Tab entfernen

Du kannst einen oder mehrere Tabs entfernen. Oder gleich alle, wenn Du sie nicht benötigst.

if (!function_exists( 'evolution_remove_woocommerce_product_tabs' ) ) :
/**
 * WooCommerce - Produkt-Tabs entfernen
 * 
 */
function evolution_remove_woocommerce_product_tabs( $tabs ) {
	unset( $tabs['description'] );			// Remove the description tab
	unset( $tabs['reviews'] );			// Remove the reviews tab
	unset( $tabs['additional_information'] );  	// Remove the additional information tab

	return $tabs;
}
add_filter( 'woocommerce_product_tabs', 'evolution_remove_woocommerce_product_tabs', 98 );
endif;

Die WooCommerce Product Tabs umbenennen

if (!function_exists( 'evolution_rename_product_tabs' ) ) :
/**
 * Benenne die WooCommerce Product Tabs um
 */
function evolution_rename_product_tabs( $tabs ) {
    
$tabs['description']['title'] = __( 'Zusätzliche Informationen' ); // Rename the description tab
$tabs['reviews']['title'] = __( 'Kundenbewertungen' ); // Rename the reviews tab
$tabs['additional_information']['title'] = __( 'Produktinformationen' ); // Rename the additional information tab
    
return $tabs;
    
}
add_filter( 'woocommerce_product_tabs', 'evolution_rename_product_tabs', 98 );
endif;

Die Reihenfolge der Produkt Tabs ändern

if (!function_exists( 'evolution_reorder_woocommerce_product_tabs' ) ) :
/**
 * WooCommerce - Reihenfolge der Produkt-Tabs ändern
 * 
 */
function evolution_reorder_woocommerce_product_tabs( $tabs ) {
    
	$tabs['reviews']['priority'] = 5;			// Reviews first
	$tabs['description']['priority'] = 10;			// Description second
	$tabs['additional_information']['priority'] = 15;	// Additional information third

	return $tabs;
}
add_filter( 'woocommerce_product_tabs', 'evolution_reorder_woocommerce_product_tabs', 98 );
endif;

Eigene WooCommerce Produkt Tabs hinzufügen

if (!function_exists( 'evolution_add_woocommerce_product_tabs' ) ) :
/**
 * WooCommerce - Individuelle Produkt-Tabs hinzufügen
 */
function evolution_add_woocommerce_product_tabs( $tabs ) {
	$tabs['evolution_custom_tab'] = array(
		'title' 	=> __( 'Neuer Produkt Tab' ),
		'priority' 	=> 50,
		'callback' 	=> 'evolution_new_product_tab_callback'
	);
	
	return $tabs;
}
add_filter( 'woocommerce_product_tabs', 'evolution_add_woocommerce_product_tabs' );
endif;


if (!function_exists( 'evolution_new_product_tab_callback' ) ) :
/**
 * Die Callback Funktion
 */
function evolution_new_product_tab_callback() {
    
    
	echo 'Neuer Produkt Tab'; 
	echo 'Hier kommt Dein neuer Tab'; 
    
}
endif;

Die Produktdaten im Adminbereich - Product Data Tabs anpassen

Hier geht es um die Produktdaten im Adminbereich, korrekt Product Data Tabs genannt. Besonders wenn man Plugins zur deutschen Absicherung - wie zum Beispiel WooCommerce Germanized - installiert hat, ist dieser Bereich sehr unübersichtlich und es ist mitunter eine Menge an Auswahlmöglichkeiten vorhanden, die nur wenige Shops wirklich benötigen.

Product Dropdown Selector aufräumen

Die meisten Shops benötigen nur das einfache Produkt. Oder eins von den anderen. Daher können die nicht benötigten Produktarten auch aus dieser Liste gelöscht werden.

if (!function_exists( 'evolution_remove_product_types' ) ) :
/**
 * Entfernt unnoetige Produkte aus der Dropdownliste
 * Nur das einfache Produkt bleibt erhalten
 */ 
function evolution_remove_product_types( $types ) {
    
    unset( $types['grouped'] );
    unset( $types['external'] );
    unset( $types['variable'] );

    return $types;
}
add_filter( 'product_type_selector', 'evolution_remove_product_types' );
endif;

Product Data Checkboxen aufräumen

Ich habe keine einfache Möglichkeit in den Einstellungen von Germanized gefunden, mit der man diesen Checkbox Overload abschalten kann. Deshalb hilft uns ein wenig Code dabei.

/**
 * Entfernt die unnoetigen Checkboxen neben der Produktauswahl Select-Box im Produkt-Admin
 */
add_filter( 'product_type_options', function( $options ) {

	// remove "Virtual" checkbox
	if( isset( $options[ 'virtual' ] ) ) {
		unset( $options[ 'virtual' ] );
	}
	// remove "Downloadable" checkbox
	if( isset( $options[ 'downloadable' ] ) ) {
		unset( $options[ 'downloadable' ] );
	}
    	// remove "Downloadable" checkbox
	if( isset( $options[ 'service' ] ) ) {
		unset( $options[ 'service' ] );
	}
          	// remove "Downloadable" checkbox
	if( isset( $options[ 'used_good' ] ) ) {
		unset( $options[ 'used_good' ] );
	}  
        	// remove "Downloadable" checkbox
	if( isset( $options[ 'defective_copy' ] ) ) {
		unset( $options[ 'defective_copy' ] );
	}
            	// remove "Downloadable" checkbox
	if( isset( $options[ 'differential_taxation' ] ) ) {
		unset( $options[ 'differential_taxation' ] );
	}
            	// remove "Food" checkbox
	if( isset( $options[ 'is_food' ] ) ) {
		unset( $options[ 'is_food' ] );
	}

	return $options;

} );

Unnötige Product Data Tabs entfernen

Warum sollte man seinen Kunden mehr anbieten, als sie eigentlich benötigen. Räumen wir also mal etwas auf und entfernen die unnötigen Tabs. Der Code entfernt alle Tabs bis auf »Allgemein«. Bitte daher die Tabs auskommentieren, die erhalten bleiben sollen.

if (!function_exists( 'evolution_custom_product_data_tabs' ) ) :
/**
 * Entfernt unnoetige Auswahl-Tabs in der Produkt-Anlage für ein neues Produkt
 */  
function evolution_custom_product_data_tabs( $tabs ) {

  // unset( $tabs['general'] );
  unset( $tabs['food'] );
  unset( $tabs['inventory'] );
  unset( $tabs['shipping'] );
  unset( $tabs['linked_product'] );
  unset( $tabs['attribute'] );
  unset( $tabs['variations'] );
  unset( $tabs['advanced'] );
  return $tabs;
}
add_filter( 'woocommerce_product_data_tabs', 'evolution_custom_product_data_tabs' );
endif;

WooCommerce Styles und Scripts nur auf WooCommerce Seiten laden

WooCommerce lädt all seine JavaScript- und CSS-Dateien auf jeder einzelnen Seite Deiner Website. Auch dort, wo sie nicht benötigt werden. Das macht Deine Website unnötig langsam. Der folgende Code hilft Dir, das zu vermeiden. Er lädt die Dateien nur auf Seiten wie: Shop, Produkt, Kasse, Warenkorb.

if (!function_exists( 'evolution_manage_woocommerce_styles' ) ) :
/**
* Optimize WooCommerce Scripts
* Removes WooCommerce styles and scripts from non WooCommerce pages.
*/  
function evolution_manage_woocommerce_styles() {

    //first check that woo exists to prevent fatal errors
    if ( function_exists( 'is_woocommerce' ) ) {

        //dequeue scripts and styles
        if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() && ! is_account_page() ) {          
            wp_dequeue_style( 'woocommerce-layout' );
            wp_dequeue_style( 'woocommerce-smallscreen' );
            wp_dequeue_style( 'woocommerce-general' );
            wp_dequeue_style( 'evolution-woostyles' );
            wp_dequeue_script( 'wc_price_slider' );
            wp_dequeue_script( 'wc-single-product' );
            wp_dequeue_script( 'wc-add-to-cart' );
            wp_dequeue_script( 'wc-cart-fragments' );
            wp_dequeue_script( 'wc-checkout' );
            wp_dequeue_script( 'wc-add-to-cart-variation' );
            wp_dequeue_script( 'wc-single-product' );
            wp_dequeue_script( 'wc-cart' );
            wp_dequeue_script( 'wc-chosen' );
            wp_dequeue_script( 'woocommerce' );
            wp_dequeue_script( 'prettyPhoto' );
            wp_dequeue_script( 'prettyPhoto-init' );
            wp_dequeue_script( 'jquery-blockui' );
            wp_dequeue_script( 'jquery-placeholder' );
            wp_dequeue_script( 'fancybox' );
            wp_dequeue_script( 'jqueryui' );
        }
    }
}
add_action( 'wp_enqueue_scripts', 'evolution_manage_woocommerce_styles', 99 );
endif;

Begrenze die möglichen Artikel im Warenkorb

In gewissen Fällen kann es einen Sinn ergeben, die möglichen Produkte im Warenkorb auf »1« zu reduzieren. Beispielsweise, wenn Du ein Abo-Produkt verkaufst. Das kann man mit diesem WooCommerce Snippet schnell und einfach erreichen.

if (!function_exists( 'evolution_only_one_product_in_cart' ) ) :
/**
* @snippet WooCommerce maximal 1 Produkt im Warenkorb
*/
function evolution_only_one_product_in_cart( $passed, $added_product_id ) {
    
  wc_empty_cart(); 
  return $passed;
    
}
add_filter( 'woocommerce_add_to_cart_validation', 'evolution_only_one_product_in_cart', 99, 2 );
endif;

Nach »In den Warenkorb legen« direkt zur Kasse leiten

Wenn Du nur ein einziges Produkt anbietest oder den Warenkorb auf nur ein Produkt limitiert hast, kannst Du Deine User auch direkt zur Kasse leiten.

if (!function_exists( 'evolution_redirect_checkout_add_cart' ) ) :
/**
* @snippet Redirect to Checkout on Add to Cart
*/
function evolution_redirect_checkout_add_cart() {
    
  return wc_get_checkout_url();
    
}
add_filter( 'woocommerce_add_to_cart_redirect', 'evolution_redirect_checkout_add_cart' );
endif;

Anordnung der Felder im Kassenbereich ändern oder Felder löschen

Passe die Felder im Checkout an. Du kannst die Felder im Kassenbereich ändern, anders sortieren oder einzelne Felder löschen.

if (!function_exists( 'evolution_reorder_checkout_fields' ) ) :
/**
 * Aendere die Reihenfolge der Felder im Kassenbereich oder entferne sie komplett.
 * @add_filter woocommerce_checkout_fields
 */
function evolution_reorder_checkout_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']['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_state']      = $fields['billing']['billing_state'];
    $fields2['billing']['billing_country']    = $fields['billing']['billing_country'];
    $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;
}
add_filter( 'woocommerce_checkout_fields', 'evolution_reorder_checkout_fields' );
endif;

Das Kommentarfeld auf der Kassenseite entfernen

Dieses Feld ist wirklich unnötig, kein mir bekannter großer Online-Shop benutzt dergleichen. Also weg damit.

if (!function_exists( 'evolution_woocommerce_checkout_fields' ) ) :
/**
 * Kommentarfeld auf Kasse Seite entfernen
 */
function evolution_woocommerce_checkout_fields( $fields ) {
    
     unset($fields['order']['order_comments']);
     return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'evolution_woocommerce_checkout_fields' );
endif;

Preise nur für eingeloggte User anzeigen

Dieser Code sorgt dafür, dass die Preise in Deinem Shop nur für registrierte und auch eingeloggte User angezeigt werden. Besucher können keine Preise sehen.

if (!function_exists( 'evolution_hide_price_add_cart_not_logged_in' ) ) :
 /**
  * Preise nur für registrierte und eingeloggte User anzeigen
  */
 
function evolution_hide_price_add_cart_not_logged_in() { 
    
if ( !is_user_logged_in() ) {

 remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
 remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
 remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
 remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );  
 add_action( 'woocommerce_single_product_summary', 'print_login_to_see', 31 );
 add_action( 'woocommerce_after_shop_loop_item', 'print_login_to_see', 11 );
    }
}
add_action('init', 'evolution_hide_price_add_cart_not_logged_in');

/**
 * Zeigt einen Login-Link mit Message an
 */
function evolution_print_login_to_see() {
    
echo '<a href="' . get_permalink(wc_get_page_id('myaccount')) . '">' . __('Logge Dich ein, um die Preise zu sehen', 'theme_name') . '</a>';
    
}
endif;

Verschiebe die ähnlichen Produkte auf der Produktseite in einen neuen Tab

Wenn Du die Related Products unterhalb der Produkt-Tabs (Beschreibung, Zusätzliche Informationen...) auf der Produktseite gern in einen eigenen Tab verschieben möchtest, kannst Du es mit diesem Snippet tun.

if (!function_exists( 'evolution_new_product_tab' ) ) :
/**
 * Aehnliche Produkte in einen neuen Tab verschieben
 */ 
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
 
function evolution_new_product_tab( $tabs ) {
     
$tabs['related_products'] = array(
    'title'     => __( 'Dein neuer Tab', 'woocommerce' ),
    'priority'  => 50,
    'callback'  => 'woo_new_product_tab_content'
);
    return $tabs;
}
add_filter( 'woocommerce_product_tabs', 'evolution_new_product_tab' ); 
/**
 * Uebergabe neuer Inhalt an Tabs
 * @callback
 */
function evolution_new_product_tab_content() {
woocommerce_related_products();
}
endif;

Ersetze bei einem bestimmten Produkt das Produktbild gegen ein Video

Ja, Du kannst ein Video anstatt einem Produktbild verwenden. Das geht jedoch nur bei einem einzelnen Produkt. Den folgenden Code musst Du an zwei Stellen anpassen: zuerst musst Du die korrekte ID des Produktes herausfinden, danach muss der iframe im Code durch den Deines Videos ersetzt werden. Der Code funktioniert nur bei dem Produkt mit der passenden ID.

So findest Du die ID heraus

Klicke das Produkt zum Bearbeiten an und schaue oben in die URL-Zeile Deines Browsers. Dort findest Du die ID.

if (!function_exists( 'evolution_show_video_not_image' ) ) :
/**
 * Ersetze fuer ein spezifisches Produkt das Produktbild durch ein Video
 */
function evolution_show_video_not_image() {
 
// Finde die richtige ID Deines Produktes heraus. Funktioniert nur dort.
if ( is_product( '4835' ) ) {
 
remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );
remove_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20 );
add_action( 'woocommerce_before_single_product_summary', 'show_product_video', 30 );
 
    }
}
add_action( 'woocommerce_before_single_product', 'evolution_show_video_not_image' );

function show_product_video() {
echo '<div class="woocommerce-product-gallery">';
 
// Youtube Video iframe Code ersetzen
echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/Wnze729nPT?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>';
 
echo '</div>';
}
endif;

Was ist PayPal auf der Kassenseite entfernen

Ich denke, dass man heute kaum jemandem erklären muss, was PayPal ist. Schliesslich ist es die beliebteste Zahlungsart im Netz. Daher können wir den Erklärungslink ganz einfach entfernen.

if (!function_exists( 'evolution_remove_what_is_paypal' ) ) :
/**
 * Was ist Paypal entfernen bei Zahlungsart auf der Seite Kasse
 * @return filter
 */
function evolution_remove_what_is_paypal( $icon_html, $gateway_id ) {
    
if( 'paypal' == $gateway_id ) {
    
$icon_html = '<img src="/wp-content/plugins/woocommerce/includes/gateways/paypal/assets/images/paypal.png" alt="PayPal Acceptance Mark">';
    
    }   
return $icon_html;   
}
add_filter( 'woocommerce_gateway_icon', 'evolution_remove_what_is_paypal', 10, 2 );
endif;

Die Zusätzlichen Informationen direkt über dem »In den Warenkorb« Button ausgeben

Wichtige Dinge werden leicht übersehen. Die zusätzlichen Information in den Tabs auf der Produktseite zum Beispiel. Dabei könnte es durchaus wichtig sein, diese Informationen als Kunde zu lesen. Deshalb geben wir sie direkt über dem »In den Warenkorb« Button ein.

© Screenshot und Code: www.emoose.de

// Zusätzliche Informationen direkt über Warenkorb

add_action ( 'woocommerce_single_product_summary', 'show_attributes', 25 );
function show_attributes() {
  global $product;
  $product->list_attributes(); 
}

Button erstellen, um den Warenkorb zu leeren

Die Standardfunktion um einen Warenkorb zu leeren ist nicht gerade sehr benutzerfreundlich. Dabei sollte man seinen Besuchern und potenziellen Kunden das Leben so leicht wie nur möglich machen. Deshalb sollte man einen einfachen Weg mittels Button anbieten, der auf der Warenkorbseite den kompletten Warenkorb löschen kann.

WooCommerce Snippet: Button erstellen, um den Warenkorb zu leeren

Diesen Button erstellen wir mit diesem Code

if (!function_exists( 'evolution_empty_cart_button' ) ) :
/**
 * Warenkorb leeren mittels Button
 * Wir definieren den Button
 */
function evolution_empty_cart_button() {
echo '<a href="' . esc_url( add_query_arg( 'empty_cart', 'yes' ) ) . '" class="button" title="' . esc_attr( 'Warenkorb leeren', 'woocommerce' ) . '">' . esc_html( 'Warenkorb leeren', 'woocommerce' ) . '</a>';
}
add_action( 'woocommerce_cart_actions', 'evolution_empty_cart_button' );


function evolution_empty_cart_action() {
/**
 * Ein Klick auf den Button löst diese Funktion aus
  */
if ( isset( $_GET['empty_cart'] ) && 'yes' === esc_html( $_GET['empty_cart'] ) ) {
WC()->cart->empty_cart();
$referer  = wp_get_referer() ? esc_url( remove_query_arg( 'empty_cart' ) ) : wc_get_cart_url();
wp_safe_redirect( $referer );
    } 
}
add_action( 'wp_loaded', 'evolution_empty_cart_action', 20 );
endif;

Anzeige Warenkorb Restbetrag bis kostenloser Versand

Für diesen Betrag musst Du noch weiter einkaufen, bis der Versand kostenlos ist. Ein toller Service das direkt oberhalb des Warenkorbs anzuzeigen. Zudem bringt es Dir zusätzliche Verkäufe, denn Kunden zahlen ungern Versandkosten.

© Screenshot und Code: www.emoose.de

// Anzeige Warenkorb Restbetrag bis kostenloser Versand
 
add_action( 'woocommerce_before_cart', 'free_shipping_cart_notice_zones' );
 
function free_shipping_cart_notice_zones() {
 
global $woocommerce;
 
// Get Free Shipping Methods for Rest of the World Zone & populate array $min_amounts
 
$default_zone = new WC_Shipping_Zone(0);
$default_methods = $default_zone->get_shipping_methods();
 
foreach( $default_methods as $key => $value ) {
    if ( $value->id === "free_shipping" ) {
      if ( $value->min_amount > 0 ) $min_amounts[] = $value->min_amount;
    }
}
 
// Get Free Shipping Methods for all other ZONES & populate array $min_amounts
 
$delivery_zones = WC_Shipping_Zones::get_zones();
 
foreach ( $delivery_zones as $key => $delivery_zone ) {
  foreach ( $delivery_zone['shipping_methods'] as $key => $value ) {
    if ( $value->id === "free_shipping" ) {
    if ( $value->min_amount > 0 ) $min_amounts[] = $value->min_amount;
    }
  }
}
 
// Find lowest min_amount
 
if ( is_array($min_amounts) ) {
 
$min_amount = min($min_amounts);
 
// Get Cart Subtotal inc. Tax excl. Shipping
 
$current = WC()->cart->subtotal;
 
// If Subtotal < Min Amount Echo Notice
// and add "Continue Shopping" button
 
if ( $current < $min_amount ) {
$added_text = esc_html__('Der Versand in Deutschland ist kostenlos, wenn du für weitere ', 'woocommerce' ) . wc_price( $min_amount - $current ) . esc_html__(' einkaufst!', 'woocommerce'   );
$return_to = apply_filters( 'woocommerce_continue_shopping_redirect', wc_get_raw_referer() ? wp_validate_redirect( wc_get_raw_referer(), false ) : wc_get_page_permalink( 'shop' ) );
$notice = sprintf( '<a href="%s" class="button wc-forward">%s</a> %s', esc_url( $return_to ), esc_html__( 'Weiter einkaufen', 'woocommerce' ), $added_text );
wc_print_notice( $notice, 'notice' );
        }
    }
}

Eingabemöglichkeit für Gutscheincode auf Kassenseite entfernen

Hast Du dich jemals gefragt, warum es diese Funktion im Warenkorb und auf der Kassenseite gibt? Und vor allem, warum sie auf der Kassenseite noch erscheint, selbst wenn man bereits einen Gutscheincode im Warenkorb eingelöst hat? Das ist völlig unsinnig. Die Eingabemöglichkeit im Warenkorb reicht vollkommen aus. Daher entfernen wir sie auf der Kassenseite im Checkout.

if (!function_exists( 'evolution_woocommerce_coupons_enabled_checkout' ) ) :
/**
 * Eingabemöglichkeit für Gutscheincode auf Kassenseite entfernen
 * @return filter
 */
function evolution_woocommerce_coupons_enabled_checkout( $coupons_enabled ) {
    
    global $woocommerce;
    
    if ( ! empty( $woocommerce->cart->applied_coupons ) ) {
        return false;
    }
    return $coupons_enabled;
}
add_filter( 'woocommerce_coupons_enabled', 'evolution_woocommerce_coupons_enabled_checkout' );
endif;

Die (SEO) Kategoriebeschreibung unterhalb der Produkte darstellen

Die Beschreibung der Kategorien gehört zu den wichtigsten SEO-Elementen eines Online-Shops. Da die eigentlichen Produkte oftmals nicht direkt SEO-Optimiert werden können, weil es einfach zu viele Produkte sind, optimiert man die Kategorien. Das resultiert meistens in ellenlangen Texten, die ein potenzieller Kunde nicht lesen wird und nicht lesen will. Er will einfach nur ein Produkt kaufen. Deshalb gehört der Text unterhalb der Produktlisten platziert.

// Kategoriebeschreibung unterhalb der Produkte darstellen

remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
add_action( 'woocommerce_after_main_content', 'woocommerce_taxonomy_archive_description', 100 );

Reduzierte Preise: Wie lang ist das Produkt reduziert?

Wie lange gilt eigentlich der reduzierte Preis eines Deiner Produkte? Du kannst bei WooCommerce einen Angebotspreis und einen Angebotszeitraum für ein Produkt eingeben. Auf der Produktseite hingegen wird nur der Angebotspreis, jedoch nicht der Zeitraum des Angebotspreises angezeigt. Mit diesem WooCommerce Snippet änderst Du das.

if (!function_exists( 'evolution_custom_price_html' ) ) :
/**
 * Angebotszeitraum beim Produkt anzeigen
 */
function evolution_custom_price_html( $price, $product ){
    global $post;
    $sales_price_to = get_post_meta($post->ID, '_sale_price_dates_to', true);
    if(is_single() && $sales_price_to != "")
    {
        $sales_price_date_to = date("j M y", $sales_price_to);
        // Umlaute stets maskieren - Siehe www.math.uni-hamburg.de/doc/html/selfhtml-6.1/tcad.htm
        return str_replace( '</ins>', ' </ins> <b>(Angebot gültig bis: '.$sales_price_date_to.')</b>', $price );
    }
    else
    {
        return apply_filters( 'woocommerce_get_price', $price );
    }
}
add_filter( 'woocommerce_get_price_html', 'evolution_custom_price_html', 100, 2 );
endif;

Gutscheincodes bei Angeboten automatisch in den Warenkorb einfügen

Je benutzerfreundlicher Dein Shop ist, desto mehr Bestellungen wirst Du bekommen. Warum sollten Deine Kunden also einen von Dir angebotenen Gutscheincode manuell eingeben müssen? Viel besser ist es, den Code automatisch hinzuzufügen, wenn das beworbene Produkt in den Warenkorb gelegt wird. Das wird Deine Kunden begeistern!

if (!function_exists( 'evolution_apply_matched_coupons' ) ) :
/**
 * Gutscheincode automatisch bei Angebotsaktionen in den Warenkorb legen
 */
function evolution_apply_matched_coupons() {
    
    global $woocommerce;
    //Gutscheinname eingeben
    $coupon_code = 'hier_der_name_des_gutscheins'; 
    
    if ( $woocommerce->cart->has_discount( $coupon_code ) ) return;
    $woocommerce->cart->add_discount( $coupon_code );
    
}
add_action( 'woocommerce_before_cart', 'evolution_apply_matched_coupons' );
endif;

Fazit: Das waren die nützlichsten WooCommerce Snippets bis jetzt

Wir werden diese Liste immer weiter ergänzen, wenn wir weitere und sehr nützliche Schnipsel finden. Schau also gern öfter mal vorbei oder abonniere gleich unseren Newsletter.

Keine Information mehr verpassen

Für den Newsletter anmelden, um jeden Monat tolle Inhalte und wichtige Infos zu bekommen.

Wir senden keinen Spam! Erfahre mehr in unserer Datenschutzerklärung.

Andreas Hecht

Andreas Hecht

Andreas ist der Gründer und CEO der SEO Agentur Hamburg und Experte für Suchmaschinenoptimierung und WordPress Entwicklung.

Du bist auf der Suche nach einer seriösen SEO Agentur?

Dir hat unser Artikel gefallen und Du möchtest unsere Hilfe in Anspruch nehmen? Dann melde dich bei unverbindlich bei uns. Wir freuen uns auf Deine Anfrage!

Jetzt weitere interessante Beiträge lesen

Es wurden keine Ergebnisse gefunden, die deinen Suchkriterien entsprechen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.