Czas leci … minęło 6 miesięcy, odkąd zacząłem pracować dla WooThemes jako technik wsparcia WooCommerce na pełny etat. W ciągu tych 6 miesięcy wiele się nauczyłem na WooCommerce i dużo kodowałem (Czytaj dużo!) fragmentów związanych z WooCommerce. W rzeczywistości WooCommerce jest naprawdę potężnym narzędziem i łatwo rozszerzalnym. Ma wiele haczyków, które mogą być używane do prawie wszystkiego, i to sprawia, że WooCommerce jest tak dobry. Oto lista fragmentów, które napisałem lub dostosowałem w ciągu ostatnich miesięcy; wszystkie te fragmenty muszą być wklejone w funkcjach.plik php w folderze motywu:

1-Dodaj typ płatności do wiadomości e-mail administratora WooCommerce

add_action ('woocommerce_email_after_order_table', 'add_payment_method_to_admin_new_order', 15, 2 );
 
function add_payment_method_to_admin_new_order ($order, $is_admin_email ) {
  if ($is_admin_email) {
    echo '<p><strong>metoda płatności:</strong> ' . $order->payment_method_title . "</p>";
  }
}

2-Up-sprzedaje produkty na stronę / na linię

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15) ;
add_action ('woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15) ;
 
jeśli ( ! function_exists ('woocommerce_output_upsells')) {
	function woocommerce_output_upsells () {
	    woocommerce_upsell_display (3,3 ); / / wyświetl 3 produkty w rzędach po 3
	}
}

3-Usuń kategorie produktów ze strony sklepu

add_action ('pre_get_posts', 'custom_pre_get_posts_query');

function custom_pre_get_posts_query ($q ) {
 
	jeśli ( ! $q - > is_main_query ()) return;
	jeśli ( ! $q- > is_post_type_archive ()) return;
	
	jeśli ( ! is_admin () & & is_shop ()&&! is_user_logged_in() ) {
 
		$q- > set ('tax_query', array (array(
			'taxonomy' = > 'product_cat',
			'field' = > 'slug',
			'terms' = > array ('color', 'flavour', 'spices', 'vanilla'), / / Nie wyświetlaj produktów z tych kategorii na stronie sklepu
			'operator' = > 'NOT IN'
		)));
	
	}
 
	remove_action ('pre_get_posts', 'custom_pre_get_posts_query');
 
}

4-szybko Przetłumacz dowolny ciąg

add_filter ('gettext', 'translate_text');
add_filter ('ngettext', 'translate_text');
 
function translate_text ($translated) {
     $translated = str_ireplace ('Choose and option',' Select', $translated);
     return $translated;
}

5-Wyklucz kategorię z widżetu kategorii WooCommerce

add_filter ('woocommerce_product_categories_widget_args', 'woo_product_cat_widget_args');

function woo_product_cat_widget_args ($cat_args ) {
	
	$cat_args['exclude'] = array ('16');
	
	return $cat_args;
}

6-Dodaj niestandardowe pole do zmiany produktu

// Wyświetl Pola
add_action ('woocommerce_product_after_variable_attributes', 'variable_fields', 10, 2 );
// JS do dodawania pól dla nowych odmian
add_action ('woocommerce_product_after_variable_attributes_js', 'variable_fields_js');
// Zapisz pola zmian
add_action ('woocommerce_process_product_meta_variable', 'variable_fields_process', 10, 1 );

function variable_fields ($loop, $variation_data ) { ?>	
	<tr>
		<td>
			<div>
					< label > < / label>
					<input type = "text" size = " 5 "name=" my_custom_field [] " value="" / >
			< / div>
		< / td>
	< / tr>

<tr>
		<td>
			<div>
					< label > < / label>
					
			< / div>
		< / td>
	< / tr>
<?php }
 
function variable_fields_process ($post_id ) {
	if (isset ($_POST['variable_sku'] ) ) :
		$variable_sku = $_POST['variable_sku'];
		$variable_post_id = $_POST ['variable_post_id'];
		$variable_custom_field = $_POST['my_custom_field'];
		for ($i = 0; $i < sizeof( $variable_sku); $i++ ) :
			$variation_id = (int) $variable_post_id[$i];
			if (isset ($variable_custom_field[$i])) {
				update_post_meta ($variation_id, '_my_custom_field', stripslashes ($variable_custom_field[$i] ) );
			}
		endfor;
	endif;
}

7-Zastąp „Brak w magazynie „przez ” sprzedane”

add_filter ('woocommerce_get_avdostępność', 'dostępność_filter_func');

function availability_filter_func ($availability)
{
	$availability ['availability'] = str_ireplace ('Out of stock','Sold', $availability ['availability']);
	return $ dostępność;
}

8-Wyświetl przycisk” produkt już w Koszyku „zamiast” Dodaj do koszyka”

/**
 * Zmiana tekstu Dodaj do koszyka na stronach pojedynczych produktów
 */
add_filter ('woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text');

function woo_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 _ _('już w Koszyku-Dodaj ponownie?", "woocommerce");
		}
	}
	
	return __('Dodaj do koszyka', 'woocommerce');
}

/**
 * Zmiana tekstu Dodaj do koszyka w Archiwum produktów
 */
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 _ _('już w Koszyku','woocommerce');
		}
	}
	
	return __('Dodaj do koszyka', 'woocommerce');
}

9-Ukryj ilość produktów w widoku kategorii

add_filter ('woocommerce_subcategory_count_html', 'woo_remove_category_products_count');

function woo_remove_category_products_count () {
	return;
}

10-Make account checkout pola wymagane

add_filter ('woocommerce_checkout_fields', 'woo_filter_account_checkout_fields');
 
function woo_filter_account_checkout_fields ($fields ) {
	$fields['account']['account_username'] ['required'] = true;
	$fields['account']['account_password']['required'] = true;
	$fields['account']['account_password-2'] ['required'] = true;

	return $ fields;
}

11-zmiana nazwy karty produktu

add_filter ('woocommerce_product_tabs', 'woo_rename_tab', 98) ;
function woo_rename_tab ($tabs) {

 $tabs['description'] ['title'] = 'więcej informacji';

 return $tabs;
}

12-Lista kategorii produktów WooCommerce

$args = array(
    'number' = > $number,
    'orderby' = > $orderby,
    'order' = > $order,
    'hide_empty' = > $hide_empty,
    'include' = > $ids
);

$product_categories = get_terms ('product_cat', $args );

$count = count ($product_categories);
 if ($count > 0) {
     echo "<ul>";
     foreach ($product_categories as $product_category ) {
       echo '<li><a href="' . get_term_link( $product_category ) . '">' . $product_category->nazwa . "</li>";
        
     }
     echo "</ul>";
 }

13-Zmień tytuł strony sklepu

add_filter ('woocommerce_page_title', 'woo_shop_page_title');

function woo_shop_page_title ($page_title ) {
	
	if ('Shop' = = $page_title) {
		powrót"mój nowy tytuł";
	}
}

14-zmiana tytułu widżetu

/*
 * Zmień tytuł widgetu
 */
add_filter ('widget_title', 'woo_widget_title', 10, 3);

function woo_widget_title ($title, $instance, $id_base ) {
	
	if ('onsale' = = $id_base) {
		powrót"mój nowy tytuł";
	}
}

15-Usuń domyślne ustawienia WooCommerce

add_filter ('woocommerce_catalog_settings', 'woo_remove_catalog_options');

function woo_remove_catalog_options ($catalog ) {

	unset ($catalog[23]); / / Trim zero (no) 
	unset ($catalog[22]); / / 2 po przecinku 
	unset ($catalog[21]); / / decimal sep (.) 
	unset ($catalog[20]); //thousand sep (,) 
	unset ($catalog[19]); / / pozycja waluty (z lewej)	
	unset ($catalog[18]); / / pozycja waluty (z lewej)	
	unset ($catalog[5]); / / ajax Dodaj do koszyka (Nie)	
	
	return $ catalog; 
}

16-zmiana adresu e-mail” z”

function woo_custom_wp_mail_from () {
        global $woocommerce;
        return html_entity_decode ('your@email.com' );
}
add_filter ('wp_mail_from', 'woo_custom_wp_mail_from', 99) ;

17-dekoduj z nazwy w e-mailu WooCommerce

function woo_custom_wp_mail_from_name () {
        global $woocommerce;
        return html_entity_decode (get_option ('woocommerce_email_from_name' ) );
}
add_filter ('wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99) ;

function woo_custom_wp_mail_from () {
        global $woocommerce;
        return html_entity_decode (get_option ('woocommerce_email_from' ) );
}
add_filter ('wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99) ;

18-zwrot polecanych produktów ids

function woo_get_featured_product_ids () {
	// Load from cache
	$featured_product_ids = get_transient ('wc_featured_products' );

	// Znaleziono poprawny cache
	if (false != = $featured_product_ids )
		return $featured_product_ids;

	$featured = get_posts( array(
		'post_type' = > array ('product', 'product_variation'),
		'posts_per_page' = > -1,
		'post_status' = > 'publish',
		'meta_query' = > array(
			array(
				'key' = > '_visibility',
				'value' = > array ('catalog','visible'),
				'compare' = > 'IN'
			),
			array(
				'key' = > '_featured',
				'value' = > 'yes'
			)
		),
		'fields' = > 'id = > parent'
	) );

	$product_ids = array_keys ($featured );
	$parent_ids = array_values ($featured );
	$featured_product_ids = array_unique( array_merge( $product_ids, $parent_ids ) );

	set_transient ('wc_featured_products', $featured_product_ids );

	return $featured_product_ids;
}

19-Dodaj niestandardowe pole do edycji strony adresowej

// Dodaj pola do edycji strony adresowej
function woo_add_edit_address_fields ($fields ) {

	$new_fields = array(
				'date_of_birth' = > array(
				'label' = > _ _ ('Data urodzenia', 'woocommerce'),
				'required' = > false,
				'class' = > array ('form-row'),
			),
		);
		
	$fields = array_merge ($fields, $new_fields );
	
    return $ fields;
	
}

add_filter ('woocommerce_default_address_fields', 'woo_add_edit_address_fields');

20-Display onsale products catalog shortcode

function woocommerce_sale_products ($atts ) {

    global $woocommerce_loop;

    extract (shortcode_atts(array (
        'per_page' = > '12',
        'columns' = > '4',
        'orderby' = > 'date',
        'order' = > 'desc'
    ), $atts));

    $woocommerce_loop['columns'] = $columns;

    $args = array(
        'post_type' = > 'produkt',
        'post_status' = > 'publish',
        'ignore_sticky_posts' = > 1,
        'posts_per_page' = > $per_page,
        'orderby' = > $orderby,
        'order' = > $order,
        'meta_query' = > array(
            array(
                'key' = > '_visibility',
                'value' = > array ('catalog','visible'),
                'compare' = > 'IN'
            ),
            array(
                'key' = > '_sale_price',
                'wartość' = > 0,
                'compare'=>'>',
                'type' = > 'NUMERIC'
            )
        )
    );
    query_posts ($args);
    ob_start();
    woocommerce_get_template_part ('loop',' shop');
    wp_reset_query();

    return ob_get_clean();
}

add_shortcode ('sale_products', 'woocommerce_sale_products');

21-posiadaj produkty onsale

function woo_have_onsale_products () {
	
	global $woocommerce;

	// Uzyskaj produkty w sprzedaży
	$product_ids_on_sale = array_filter( woocommerce_get_product_ids_on_sale() );

	jeśli( !empty ($product_ids_on_sale)) {
		return true;
	} else {
		return false;
	}
	
}

// Przykład:
if (woo_have_onsale_products() ) {
	echo "posiadaj produkty onsale";
} else {
	echo "no onsale product";
}

22-ustaw minimalną kwotę zamówienia

add_action ('woocommerce_checkout_process', 'wc_minimum_order_amount');
function wc_minimum_order_amount () {
	global $woocommerce;
	$ minimum = 50;
	if ($woocommerce - > cart - > get_cart_total (); < $minimum) {
           $woocommerce->add_error (sprintf ('musisz mieć zamówienie z minimum %s, aby złożyć zamówienie.', $minimum ) );
	}
}

23-Zamów według ceny, daty lub tytułu na stronie sklepu

add_filter ('woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby');
 
function custom_default_catalog_orderby () {
     return 'date'; / / może również używać tytułu i ceny
}

24-przekierowanie przycisku Dodaj do koszyka na stronę kasy

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout () {
    global $woocommerce;
    $checkout_url = $woocommerce->koszyk->get_checkout_url();
    return $checkout_url;
}

25-Dodaj odbiorcę wiadomości e-mail po zakończeniu zamówienia

function woo_extra_email_recipient ($odbiorca, $obiekt) {
    $odbiorca = $odbiorca . ", your@email.com';
    return $ odbiorca;
}
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'woo_extra_email_recipient', 10, 2);

I … to wszystko! Mam nadzieję, że znajdziesz te fragmenty przydatne, wszystkie zostały przetestowane i wszystkie działają dobrze, ale jeśli napotkasz jakiekolwiek problemy, daj mi znać w sekcji komentarzy. Miłej zabawy! 😉

You May Also Like

Jak naprawić nieprawidłowy błąd JSON w WordPress (Przewodnik dla początkujących)

W artykule: Co powoduje błąd „nieprawidłowa odpowiedź JSON” w WordPress?1. Sprawdź adresy…

Jak zmienić kolor linku w WordPress (poradnik dla początkujących)

W artykule: Dlaczego Linki Są Ważne?Jak dodawać linki w postach i stronach…

WordPress Pingbacks & Trackbacks: Ultimate A-Z Guide

W artykule: Czym są Pingbacks i Trackbacks? Plus, dlaczego są ważneCzym Są…

Jak naprawić błąd krytyczny w WordPress (krok po kroku)

W artykule: Co To jest błąd krytyczny w WordPress?Co powoduje krytyczny błąd…