Woocommerce Snippets Backend des Webshops über functions.php Snippets anpassen

WooCommerce Preisspanne: Von bis Preise in Ab Preise ändern

Wenn man ein WooCommerce Shop hat und variable Produkte eingebaut hat, dann sieht man bei der Preis anzeige ein „Von bis“ Preis anzeige – also „2-10 CHF“.
Manchmal möchte man aber als Shopbetreiber nicht, dass man den maximalen Preis angezeigt bekommt – denn das könnte Kunden abhalten zu kaufen. Aus diesem Grund möchte man vielleicht die Preisanzeige in der Übersichtseite so umformatiert haben „Ab 2 CHF“.

Mit diesem einfachen Snippet ist das möglich – einfach dieses Snippet in die functions.php File reinkopieren und abspeichern und dann ist die Anzeige angepasst.

add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
function wc_wc20_variation_price_format( $price, $product ) {
// Main Price
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( ' ab %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Sale Price
$prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( ' ab %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
 
if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
}
return $price;
}

 

Anzahl der erstellten Varianten vom 50 erhöhen

Ein guter Server wird vorausgesetzt….
define ('WC_MAX_LINKED_VARIATIONS', 100);
 

Automatically rewrite existing links and add the rel=“sponsored” attribute

Wichtig für SEO, wenn man Affiliate-Links verwendet. Google straft diese ab, wenn man Affiliate-Links nicht richtig mit „sponsored“ kennzeichnet. Im CodeSnippet noch die entsprechende „Affiliater-Domain“ hinterlegen.

 

function rewrite_affiliate_links($content) {   $content = preg_replace_callback(   '/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',     function($m) { 		$Sponsored_URLS = explode(",","Amazon.com,amzn.to,shareasale.com,hsselite.7eer.net,tkqlhce.com,jdoqocy.com,dpbolvw.net,awltovhc.com,tqlkg.com,lduhtrp.net,anrdoezrs.net,ftjcfx.com,7eer.net,refersion.com,avantlink.com,/go/,www.sunstar.com.ph,www.alliedmarketresearch.com,www.theyucatantimes.com,rubikicks.com,superfoodprofiles.com,amplifi.com,performancelab.com"); 		$i = 0; 		$j = count($Sponsored_URLS); 		while ($i < $j) { ; 			if ((strpos(strtolower($m[1]), strtolower($Sponsored_URLS[$i])) !== false)) { 				$match = "yes";        		     		}     		$i++;     	}     	if ($match == "yes") {     		return '<a href="'.$m[1].'" rel="sponsored noopener" target="_blank">'.$m[2].'*</a>';     	} else { 		  	if ((strpos(strtolower($m[1]), $_SERVER['HTTP_HOST']) !== false) || (substr($m[1],0,1) == "#")) { 			  return $m[0]; 			} else { 			  return '<a href="'.$m[1].'" rel="follow noopener" target="_blank">'.$m[2].'</a>'; 			}     	}     }, $content);    return $content; }  add_filter('the_content', 'rewrite_affiliate_links', 100);   

 

 

Produktbilder im Backend vergrößern

Die Produktbilder im Backend von WooCommerce in der Übersicht „Produkte“ mag für manchen Anwender etwas klein sein, aber das lässt sich leicht ändern und darum lieben wir WooCommerce

// Produktbilder im Backend vergrößern

add_action('admin_head', 'ts_wc_admin_thumbs');
function ts_wc_admin_thumbs() {
echo '
table.wp-list-table .column-thumb {
width: 90px;
}
table.wp-list-table td.column-thumb img {
max-width: 80px;
max-height: 80px;
padding-top: 10px;
padding-bottom: 10px
}
.widefat td {
vertical-align: middle;
}
';
}

 

 

BBC abgeschlossene Bestell-Emails

WooCommerce schickt eine Mail an den Kunden wenn die Bestellung fertiggestellt wurde, aber leider nicht an dich als Shopbetreiber. Mit diesem einfach Snippet erhälst du diese Mail in BCC. Ersetze einfach deinen Namen und deine E-Mail-Adresse.

// BCC abgeschlosse E-Mails an beliebige Adresse

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2);

function mycustom_headers_filter_function( $headers, $object ) {
if ($object == 'customer_completed_order') {
$headers .= 'BCC: Dein Name <deine@email.de>' . "\r\n";</deine@email.de>
}

return $headers;
}

 

 

BBC alle Woocommerce-Emails

WooCommerce schickt so einige Mails and den Kunden, aber leider nicht an dich als Shopbetreiber. Mit diesem einfach Snippet erhälst du alle WooCommerceMails in BCC. Ersetze einfach deine E-Mail-Adresse.

// BCC alle WooCommerce E-Mails

function woo_cc_all_emails() {
return 'Bcc: youremail@yourdomain.com' . "\r\n";
}
add_filter('woocommerce_email_headers', 'woo_cc_all_emails' );

 

 

Reply-To Funktion für Email-Auftragsbestätigung

Als Shopbetreiber kann man sich ja eine E-Mail für einen neue Kunden-Bestellung zuschicken lassen. Klickt man dann in seinem Mailprogramm auf antworten, weil man dem Kunden eventuell noch eine Info zusenden möchte, schickt man sich diese Mail praktisch selber, weil man ja dem Absender des Shops antwortet. Mit diesem Snippet wird automatisch beim Antworten die E-Mail-Adresse des Kunden eingetragen.

// Reply To Funktion in Auftragsbestätigung

add_filter( 'woocommerce_email_headers', 'add_reply_to_wc_admin_new_order', 10, 3 );

function add_reply_to_wc_admin_new_order( $headers = '', $id = '', $order ) {
if ( $id == 'new_order' ) {
$headers .= "Reply-To: ".$order->billing_email."\r\n";
}
return $headers;
}

 

 

Prefix / Suffix zur Bestellnummer hinzufügen

Ob nun aus optischen oder organisatorischen Gründen, mit diesem kleinen Snippet kann man seinen Bestellnummern in WooCommerce ein Prefix und ein Suffix hinzufügen.

// Prefix & Suffix zu Bestellnummer hinzufügen

add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );

function change_woocommerce_order_number( $order_id ) {
$prefix = 'Dein Prefix-';
$suffix = '-Dein Suffix';
$new_order_id = $prefix . $order_id . $suffix;
return $new_order_id;
}

 

 

Neuer zusätzlicher Bestellstatus

Manchmal braucht es einfach einen weitere Bestellstatus, Gründe dafür kann es viele geben. WIr haben z.B. einen neuen Bestellstatus „In Lieferrückstand“
eingefügt, weil wir bei einigen Produkten eine Bestellung trotz ausverkauftem Lagerbestand erlauben. Damit wir dann nicht den Überblick verlieren, wir die Bestellung einfach in den neuen Bestellstaus geschoben.

//Neuer Bestellstatus Lieferrückstand
function register_shipment_arrival_order_status() {
register_post_status( 'wc-arrival-shipment', array(
'label' => 'In Lieferrückstand',
'public' => true,
'show_in_admin_status_list' => true,
'show_in_admin_all_list' => true,
'exclude_from_search' => false,
'label_count' => _n_noop( 'In Lieferrückstand (%s)', 'In Lieferrückstand (%s)' )
) );
}
add_action( 'init', 'register_shipment_arrival_order_status' );

function add_awaiting_shipment_to_order_statuses( $order_statuses ) {

$new_order_statuses = array();

foreach ( $order_statuses as $key => $status ) {

$new_order_statuses[ $key ] = $status;

if ( 'wc-processing' === $key ) {
$new_order_statuses['wc-arrival-shipment'] = 'In Lieferrückstand';
}
}

return $new_order_statuses;
}
add_filter( 'wc_order_statuses', 'add_awaiting_shipment_to_order_statuses' );

 

 

Gesamtzahl der Verkäufe in Produktübersicht darstellen

Mit diesem kleinen Snippet könnt ihr in der Produktübersicht im Backend eine Spalte mit der Anzahl der verkauften Einheiten hinzufügen.

//Gesamtzahl der Verkäufe
add_filter( 'manage_edit-product_columns', 'bdev_add_total_sales_to_product_list', 20 );
add_action( 'manage_posts_custom_column', 'bdev_display_total_sales_in_product_list' );
add_filter('manage_edit-product_sortable_columns', 'bdev_sort_total_sales_product_list');
add_action( 'pre_get_posts', 'bdev_total_sales_query_product_list' );

function bdev_add_total_sales_to_product_list( $col_th ) {
return wp_parse_args( array( 'total_sales' => 'Total Sales' ), $col_th );
}

function bdev_display_total_sales_in_product_list( $column_id ) {
if( $column_id == 'total_sales' )
echo get_post_meta( get_the_ID(), 'total_sales', true );
}

function bdev_sort_total_sales_product_list( $a ){
return wp_parse_args( array( 'total_sales' => 'by_total_sales' ), $a );
}

function bdev_total_sales_query_product_list( $query ) {
if( !is_admin() || empty( $_GET['orderby']) || empty( $_GET['order'] ) )
return;

if( $_GET['orderby'] == 'by_total_sales' ) {
$query->set('meta_key', 'total_sales' );
$query->set('orderby', 'meta_value_num');
$query->set('order', $_GET['order'] );
}

return $query;

}

 

 

Automatische Weiterleitung zur Bestellübersicht nach dem Login

Wenn man sich das Leben vereinfachen kann, sollte man es auch machen. Für viele von euch ist es ein tägliches Ritual. In WordPress einloggen und dann zur WooCommerce Bestellübersicht um die Bestellungen zu bearbeiten. Mit diesem Snippet wirst du nach dem Login automatisch zur Bestellübersicht weitergeleitet.

// WooCommerce automatische Weiterleitung zu Bestellübersicht nach Login

add_action( 'load-index.php', 'direct_access_wp_dashboard_redirect' );

function direct_access_wp_dashboard_redirect(){
wp_redirect( admin_url( 'edit.php?post_type=shop_order' ) );
}

add_filter( 'login_redirect', 'login_wp_dashboard_redirect', 9999, 3 );

function login_wp_dashboard_redirect( $redirect_to, $request, $user ){
$redirect_to = admin_url( 'edit.php?post_type=shop_order' );
return $redirect_to;
}

 

 

 

Sortierung „Empfohlene Produkte“

Dieses Snippet fügt ein Feld zur Sortierung der “Featured products“ (Hervorgehobene Produkte mit dem Sternchen) im Backend von WooCommerce hinzu.

function wpa104537_filter_products_by_featured_status() {

global $typenow, $wp_query;

if ($typenow=='product') :


// Featured/ Not Featured
$output .= "
$output .= ''.__( 'Show All Featured Statuses', 'woocommerce' ).'';

$output .="
if ( isset( $_GET['featured_status'] ) ) $output .= selected('featured', $_GET['featured_status'], false);
$output .=">".__( 'Featured', 'woocommerce' )."";

$output .="
if ( isset( $_GET['featured_status'] ) ) $output .= selected('normal', $_GET['featured_status'], false);
$output .=">".__( 'Not Featured', 'woocommerce' )."";

$output .="";

echo $output;
endif;
}
add_action('restrict_manage_posts', 'wpa104537_filter_products_by_featured_status');

function wpa104537_featured_products_admin_filter_query( $query ) {
global $typenow;

if ( $typenow == 'product' ) {

// Subtypes
if ( ! empty( $_GET['featured_status'] ) ) {
if ( $_GET['featured_status'] == 'featured' ) {
$query->query_vars['tax_query'][] = array(
'taxonomy' => 'product_visibility',
'field' => 'slug',
'terms' => 'featured',
);
} elseif ( $_GET['featured_status'] == 'normal' ) {
$query->query_vars['tax_query'][] = array(
'taxonomy' => 'product_visibility',
'field' => 'slug',
'terms' => 'featured',
'operator' => 'NOT IN',
);
}
}

}

}
add_filter( 'parse_query', 'wpa104537_featured_products_admin_filter_query' );

 

 

Kunden-Zahlungsart in die Admin E-Mail hinzufügen

Nach jeder Bestellung bekommst du eine E-Mail von WooCommerce zugesendet. Mit diesem Snippet kannst du die Zahlungsart des Kunden in die E-Mail einfügen.

if (!function_exists( 'evolution_add_payment_method_to_admin_new_order' ) ) :

/**
* Zahlungsart des Kunden zur Admin E-Mail hinzufuegen
*
* @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>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;

 

 

Passen Sie den Text „In den Warenkorb“ an, wenn sich das Produkt bereits im Warenkorb befindet

Mit den folgenden Codefragmenten können Sie den WooCommerce-Text „In den Warenkorb“ / „Im Warenkorb“ auf den Schaltflächen ersetzen, wenn Sie das Produkt bereits im Warenkorb haben.

/**
 * Change the add to cart text on single product pages.
 */
add_filter( 'woocommerce_product_single_add_to_cart_text', 'wpsimpel_custom_cart_button_text' );
function wpsimpel_custom_cart_button_text() {
global $woocommerce;
foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if( get_the_ID() == $_product->id ) {
return __('Already in cart - Add Again?', 'woocommerce'); 
		}
}
// If product is not in cart yet, show normal text	
return __('Add to cart', 'woocommerce');
}
/**
 * Change the add to cart text on product archive pages.
 */
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );
function woo_archive_custom_cart_button_text() {
global $woocommerce;
foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if( get_the_ID() == $_product->id ) {
return __('Already in cart', 'woocommerce');
}
}
// If product is not in cart yet, show normal text	
return __('Add to cart', 'woocommerce');
}