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 Shop Snippets aus 2024 hilft dir dabei. Jedes Snippet ist durch uns getestet worden. Wir werden die Liste immer wieder erweitern.
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.
Die Voraussetzungen zum Einsatz:
- WordPress Version ab 4.6
- WooCommerce Version ab 3.xx
- PHP-Version 7.xx
Deine Wettbewerber werden bei Google besser gefunden als Du?
Mit unserer laufenden SEO Betreuung wirst Du schnell bessere Rankings in Googles Suchergebnissen erreichen und so mehr Kunden gewinnen und mehr Umsatz erzielen.
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 Code Snippets für Deinen WooCommerce Shop:
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 Shop 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
Den WooCommerce Checkout anpassen. 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.
// 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.
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.
// 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 Snippets für Deinen WooCommerce Shop
Wir werden diese Liste immer weiter ergänzen, wenn wir weitere und sehr nützliche Schnipsel finden. Schau also gern öfter mal vorbei.
Es fehlt Deiner Meinung nach ein wichtiges Snippet? Poste es in die Kommentare.