Woocommerce Antworten auf Bestellungen

In Woocommerce direkt antworten auf Bestellungen aus dem E-Mail Programm

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.

Diesen code snippet in die functions.php

// 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;
}

Für alle snippets benutzen wir das Plugin code snippet.

Woocommerce Bestellnotiz hinzufügen

Tabellenspalte für Bestellnotiz hinzufügen in den Bestellungen.

Wird bei einer Bestellung durch den Kunden eine Notiz eingetragen, so kann man diese im Backend in der Bestellübersicht sehen.

Diesen code snippet in die functions.php

function kb_set_order_note_column( $columns ) {
  $columns['order_notes'] = __('Notiz','TEXTDOMAIN');
  return $columns;
}
add_filter( 'manage_shop_order_posts_columns', 'kb_set_order_note_column', 99 );

function kb_show_order_note_columns( $column_name, $post_id ) {
 switch ( $column_name ) {
  case 'order_notes':
  $order = new WC_Order( $post_id );
  $note = $order->get_customer_note();
  print $note ? __('Ja','TEXTDOMAIN') : __('Nein','TEXTDOMAIN');
  break;
 }
}
add_action( 'manage_shop_order_posts_custom_column' , 'kb_show_order_note_columns', 10, 2 );

Für alle snippets benutzen wir das Plugin code snippet.

Woocommerce Lieferschein senden

Woocommerce Lieferschein an eine andere Adresse senden im Status bearbeiten.

Wer möchte kann nur einen Lieferschein an eine andere Adresse bei der Bestellung senden lassen. Zum Beispiel ans Lager zum verpacken ohne Preise anzugeben.

Diesen code snippet in die functions.php

add_action( 'woocommerce_order_status_processing', function( $order_id ) {
	if ( class_exists( 'WCREAPDF_Helper' ) ) {
		$attachments = array();
		$order = wc_get_order( $order_id );
		if ( WCREAPDF_Helper::check_if_needs_attachement( $order ) ) {
			$directory_name = WCREAPDF_Pdf_Delivery::create_pdf( $order );
			$attachments[] = WCREAPDF_TEMP_DIR . 'pdf' . DIRECTORY_SEPARATOR . $directory_name . DIRECTORY_SEPARATOR . get_option( WCREAPDF_Helper::get_wcreapdf_optionname( 'pdf_file_name_delivery' ), __( 'Delivery-Note', 'woocommerce-german-market' ) ) . '.pdf';
			$to = 'deine@mailadresse.de';
			$subject		= 'Lieferschein Bestellung ' . $order_id;
			$message		= 'Lieferschein im Anhang';
			$headers		= "Content-Type: text/html\r\n";
			
			wc_mail( $to, $subject, $message, $headers, $attachments );
		} 	
	} 
}, 10, 1 );

Für alle snippets benutzen wir das Plugin code snippet.

Woocommerce Order per Benutzer Rolle

In Woocommerce können unter die Bestellungen auch per User Rolle angezeigt werden.

Diesen code snippet in die functions.php

add_action( 'restrict_manage_posts', 'shop_order_user_role_filter' );
function shop_order_user_role_filter() {
	global $typenow, $wp_query;
	if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) :
		$user_role	= '';
		// Get all user roles
		$user_roles = array();
		foreach ( get_editable_roles() as $key => $values ) :
			$user_roles[ $key ] = $values['name'];
		endforeach;
		// Set a selected user role
		if ( ! empty( $_GET['_user_role'] ) ) {
			$user_role	= sanitize_text_field( $_GET['_user_role'] );
		}
		// Display drop down
		?><select name='_user_role'>
			<option value=''><?php _e( 'Select a user role', 'woocommerce' ); ?></option><?php
			foreach ( $user_roles as $key => $value ) :
				?><option <?php selected( $user_role, $key ); ?> value='<?php echo $key; ?>'><?php echo $value; ?></option><?php
			endforeach;
		?></select><?php
	endif;
}
add_filter( 'pre_get_posts', 'shop_order_user_role_posts_where' );
function shop_order_user_role_posts_where( $query ) {
	if ( ! $query->is_main_query() || ! isset( $_GET['_user_role'] ) ) {
		return;
	}
	$ids    = get_users( array( 'role' => sanitize_text_field( $_GET['_user_role'] ), 'fields' => 'ID' ) );
	$ids    = array_map( 'absint', $ids );
	$query->set( 'meta_query', array(
		array(
			'key' => '_customer_user',
			'compare' => 'IN',
			'value' => $ids,
		)
	) );
	if ( empty( $ids ) ) {
		$query->set( 'posts_per_page', 0 );
	}
}

Für alle snippets benutzen wir das Plugin code snippet.

Woocommerce Artikel im Zulauf

Status Artikel im Zulauf, nicht auf Lager

Diesen code snippet in die functions.php

add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2);
function wcs_custom_get_availability( $availability, $_product ) {
    
    // Change In Stock Text
    if ( $_product->is_in_stock() ) {
        $availability['availability'] = __('Auf Lager!', 'woocommerce');
    }
    // Change Out of Stock Text
    if ( ! $_product->is_in_stock() ) {
        $availability['availability'] = __('Nicht auf Lager! Artikel im Zulauf.', 'woocommerce');
    }
    return $availability;
}

Für alle snippets benutzen wir das Plugin code snippet.

Woocommerce neuer Bestellstatus

Woocommerce neuer Bestellstatus (Fertiggestellt nicht bezahlt)

/** 
 * Register new woocommerce status
**/
function register_shipment_arrival_order_status_2() {
    register_post_status( 'wc-nopaycomp', array(
        'label'                     => 'Versand1 nicht bezahlt',
        'public'                    => true,
        'show_in_admin_status_list' => true,
        'show_in_admin_all_list'    => true,
        'exclude_from_search'       => false,
        'label_count'               => _n_noop( 'Versand2 nicht bezahlt <span class="count">(%s)</span>', 'Versand, aber nicht bezahlt <span class="count">(%s)</span>' )
    ) );
}
add_action( 'init', 'register_shipment_arrival_order_status_2' );
function add_awaiting_shipment_to_order_statuses_2( $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-nopaycomp'] = 'Rechnung offen';
        }
    }
    return $new_order_statuses;
}
add_filter( 'wc_order_statuses', 'add_awaiting_shipment_to_order_statuses_2' );

Für alle snippets benutzen wir das Plugin code snippet.