1. 1. Teraz czytam: Moje 25 najlepszych fragmentów WooCommerce dla WordPress
  2. 2). Moje 25 najlepszych fragmentów WooCommerce dla WordPress Część 2

Czasy płyną… Minęło 6 miesięcy, odkąd zacząłem pracować dla WooThemes jako technik wsparcia technicznego WooCommerce. Przez te 6 miesięcy wiele się nauczyłem na WooCommerce i dużo kodowałem (czytaj dużo!) fragmentów powiązanych z WooCommerce. WooCommerce to naprawdę potężne narzędzie, które można łatwo rozbudowywać. Ma wiele haczyków, które można wykorzystać do prawie wszystkiego, a 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 należy wkleić w pliku functions.php w folderze motywu:


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

add działań („woocommerce_email_after_order_table”, „add_payment_method_to_admin_new_order”, 15, 2);

funkcja add_payment_method_to_admin_new_order ($ zamówienie, $ is_admin_email) {
jeśli ($ is_admin_email) {
Echo '

Metoda płatności: „. $ order-> payment_method_title. „

„; } }

2 – Sprzedaż produktów w górę na stronę / na linię

remove Działalności („woocommerce_after_single_product_summary”, „woocommerce_upsell_display”, 15);
działanie dodatkowe („woocommerce_after_single_product_summary”, „woocommerce_output_upsells”, 15);

if (! function_exists ('woocommerce_output_upsells')) {
funkcja 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 Działalności („pre_get_posts”, „custom_pre_get_posts_query”);

funkcja custom_pre_get_posts_query ($ q) {

if (! $ q-> is_main_query ()) return;
if (! $ q-> is_post_type_archive ()) return;

if (! is_admin () && is_shop () &&! is_user_logged_in ()) {

$ q-> set ('tax_query', array (array (
„taksonomia” => „product_cat”,
„field” => „ślimak”,
„terminy” => tablica („kolor”, „smak”, „przyprawy”, „wanilia”), // Nie wyświetlaj produktów w tych kategoriach na stronie sklepu
„operator” => „NOT IN”
)));

}

remove_action ('pre_get_posts', 'custom_pre_get_posts_query');

}

4 – Szybko przetłumacz dowolny ciąg znaków

add_filter ('gettext', 'translate_text');
add_filter ('ngettext', 'translate_text');

funkcja translate_text (przetłumaczone) {
$ translation = str_ireplace („Wybierz i opcję”, „Wybierz”, $ przetłumaczone);
zwróć przetłumaczone;
}

5 – Wyklucz kategorię z widżetu kategorii WooCommerce

add_filter („woocommerce_product_categories_widget_args”, „woo_product_cat_widget_args”);

funkcja woo_product_cat_widget_args ($ cat_args) {

$ cat_args ['exclude'] = array ('16 ');

zwróć $ cat_args;
}

6 – Dodaj niestandardowe pole do odmiany produktu

// Wyświetl pola
działanie dodatkowe („woocommerce_product_after_variable_attributes”, „zmienne_pola”, 10, 2);
// JS, aby dodać pola dla nowych odmian
działanie dodatkowe („woocommerce_product_after_variable_attributes_js”, „zmienne_pola_js”);
// Zapisz pola odmian
działanie dodatkowe („woocommerce_process_product_meta_variable”, „zmienne_pola_procesu”, 10, 1);

funkcja zmienne_pola ($ loop, $ variation_data) {?>


7 - Zamień „Brak w magazynie” na „sprzedane”

add_filter („woocommerce_get_availability”, „Availability_filter_func”);

funkcja Availability_filter_func ($ dostępność)
{
$ dostępność [„dostępność”] = str_ireplace („Brak w magazynie”, „Sprzedane”, $ dostępność [„dostępność”]);
zwróć dostępność;
}

8 - Wyświetl przycisk „produkt już w koszyku” zamiast przycisku „dodaj do koszyka”

/ **
* Zmień tekst dodawania do koszyka na stronach pojedynczych produktów
* /
add_filter ('woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text');

funkcja woo_custom_cart_button_text () {

globalny $ woocommerce;

foreach ($ woocommerce-> cart-> get_cart () as $ cart_item_key => $ values) {
$ _product = $ wartości [„dane”];

if (get_the_ID () == $ _product-> id) {
return __ („Już w koszyku - Add Again?”, „woocommerce”);
}
}

return __ („Dodaj do koszyka”, „woocommerce”);
}

/ **
* Zmień tekst dodawania do koszyka w archiwach produktów
* /
add_filter ('add_to_cart_text', 'woo_archive_custom_cart_button_text');

funkcja woo_archive_custom_cart_button_text () {

globalny $ woocommerce;

foreach ($ woocommerce-> cart-> get_cart () as $ cart_item_key => $ values) {
$ _product = $ wartości [„dane”];

if (get_the_ID () == $ _product-> id) {
return __ („Już w koszyku”, „woocommerce”);
}
}

return __ („Dodaj do koszyka”, „woocommerce”);
}

9 - Ukryj liczbę produktów w widoku kategorii

add_filter ('woocommerce_subcategory_count_html', 'woo_remove_category_products_count');

funkcja woo_remove_category_products_count () {
powrót;
}

10 - Wprowadź wymagane pola kasy

add_filter ('woocommerce_checkout_fields', 'woo_filter_account_checkout_fields');

funkcja woo_filter_account_checkout_fields ($ fields) {
$ fields ['konto'] ['nazwa_użytkownika konta]] [' wymagany '] = true;
$ fields ['account'] ['account_password'] ['wymagany'] = true;
$ fields ['konto'] ['account_password-2'] ['wymagany'] = true;

zwróć $ pola;
}

11 - Zmień nazwę karty produktu

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

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

zwróć tabs $;
}

12 - Wymień kategorie produktów WooCommerce

$ args = tablica (
„liczba” => liczba $,
„orderby” => $ orderby,
„zamówienie” => $ zamówienie,
'hide_empty' => $ hide_empty,
„include” => $ ids
);

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

$ count = count ($ product_categories);
if ($ count> 0) {
Echo "„;
}

13 - Zamień tytuł strony sklepu

add_filter ('woocommerce_page_title', 'woo_shop_page_title');

funkcja woo_shop_page_title ($ page_title) {

if („Shop” == $ page_title) {
zwróć „Mój nowy tytuł”;
}
}

14 - Zmień tytuł widżetu

/ *
* Zmień tytuł widżetu
* /
add_filter („widget_title”, „woo_widget_title”, 10, 3);

funkcja woo_widget_title ($ title, $ instance, $ id_base) {

if ('onsale' == $ id_base) {
zwróć „Mój nowy tytuł”;
}
}

15 - Usuń domyślne ustawienia WooCommerce

add_filter („woocommerce_catalog_settings”, „woo_remove_catalog_options”);

funkcja woo_remove_catalog_options ($ katalog) {

nieustawiony ($ katalog [23]); // Przytnij zera (nie)
nieustawiony ($ katalog [22]); // 2 miejsca po przecinku
nieustawiony ($ katalog [21]); // separator dziesiętny (.)
nieustawiony ($ katalog [20]); // tysiąc sep (,)
nieustawiony ($ katalog [19]); // pozycja walutowa (po lewej)
nieustawiony ($ katalog [18]); // pozycja walutowa (po lewej)
nieustawiony ($ katalog [5]); // ajax dodaj do koszyka (nie)

zwróć $ katalog;
}

16 - Zmień adres e-mail „z”

funkcja woo_custom_wp_mail_from () {
globalny $ woocommerce;
zwróć kod_tekstu_html („[email protected]”);
}
add_filter („wp_mail_from”, „woo_custom_wp_mail_from”, 99);

17 - Dekoduj na podstawie nazwy w wiadomości e-mail WooCommerce

funkcja woo_custom_wp_mail_from_name () {
globalny $ woocommerce;
return html_entity_decode (get_option ('woocommerce_email_from_name'));
}
add_filter („wp_mail_from_name”, „woo_custom_wp_mail_from_name”, 99);

funkcja woo_custom_wp_mail_from () {
globalny $ woocommerce;
return html_entity_decode (get_option ('woocommerce_email_from'));
}
add_filter („wp_mail_from_name”, „woo_custom_wp_mail_from_name”, 99);

18 - Zwróć identyfikatory polecanych produktów

funkcja woo_get_featured_product_ids () {
// Załaduj z pamięci podręcznej
$ featured_product_ids = get_transient ('wc_featured_products');

// Znaleziono prawidłową pamięć podręczną
if (false! == $ featured_product_ids)
zwróć $ featured_product_ids;

$ featured = get_posts (array (
„post_type” => array („product”, „product_variation”),
'posts_per_page' => -1,
„post_status” => „opublikuj”,
'meta_query' => tablica (
szyk(
„klucz” => „_visibility”,
„wartość” => tablica („katalog”, „widoczny”),
„porównaj” => „IN”
),
szyk(
„klucz” => „_featured”,
„wartość” => „tak”
)
),
„fields” => „id => rodzic”
));

$ product_ids = array_keys ($ featured);
$ parent_ids = wartości_szablonowe ($ featured);
$ featured_product_ids = tablica_unique (tablica_merge ($ product_ids, $ parent_ids));

set_transient ('wc_featured_products', $ featured_product_ids);

zwróć $ featured_product_ids;
}

19 - Dodaj pole niestandardowe, aby edytować stronę adresową

// dodaj pola, aby edytować stronę adresową
funkcja woo_add_edit_address_fields ($ fields) {

$ new_fields = array (
'date_of_birth' => tablica (
„label” => __ („Data urodzenia”, „woocommerce”),
„wymagane” => fałsz,
„class” => array („form-row”),
),
);

$ fields = array_merge ($ fields, $ new_fields);

zwróć $ pola;

}

add_filter ('woocommerce_default_address_fields', 'woo_add_edit_address_fields');

20 - Wyświetl krótki kod katalogu produktów w sprzedaży

funkcja woocommerce_sale_products ($ atts) {

globalny $ woocommerce_loop;

wyciąg (shortcode_atts (tablica (
„per_page” => „12”,
„kolumny” => „4”,
„orderby” => „data”,
„zamówienie” => „opis”
), $ atts));

$ woocommerce_loop ['columns'] = $ columns;

$ args = tablica (
„post_type” => „produkt”,
„post_status” => „opublikuj”,
'ignore_sticky_posts' => 1,
'posts_per_page' => $ na stronę,
„orderby” => $ orderby,
„zamówienie” => $ zamówienie,
'meta_query' => tablica (
szyk(
„klucz” => „_visibility”,
„wartość” => tablica („katalog”, „widoczny”),
„porównaj” => „IN”
),
szyk(
„klucz” => „_sale_price”,
„wartość” => 0,
„porównaj” => „>”,
„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 w sprzedaży

funkcja woo_have_onsale_products () {

globalny $ woocommerce;

// Zdobądź produkty na wyprzedaży
$ product_ids_on_sale = filtr_w macierzy (woocommerce_get_product_ids_on_sale ());

if (! empty ($ product_ids_on_sale)) {
zwróć prawdę;
} else {
zwracać fałsz;
}

}

// Przykład:
if (woo_have_onsale_products ()) {
echo „mają produkty w sprzedaży”;
} else {
echo „brak produktu w sprzedaży”;
}

22 - Ustaw minimalną kwotę zamówienia

działanie dodatkowe („woocommerce_checkout_process”, „wc_minimum_order_amount”);
funkcja wc_minimum_order_amount () {
globalny $ woocommerce;
minimum $ = 50;
if ($ woocommerce-> cart-> get_cart_total (); < $minimum ) {
$woocommerce->add_error (sprintf ('Musisz złożyć 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');

funkcja custom_default_catalog_orderby () {
Data powrotu'; // Można również użyć tytułu i ceny
}

24 - Przycisk Przekieruj dodaj do koszyka, aby przejść do strony kasy

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

funkcja redirect_to_checkout () {
globalny $ woocommerce;
$ checkout_url = $ woocommerce-> cart-> get_checkout_url ();
return $ checkout_url;
}

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

funkcja woo_extra_email_recipient ($ adresat, $ obiekt) {
$ adresat = $ odbiorca. „twó[email protected]”;
zwróć odbiorcę $;
}
add_filter („woocommerce_email_recipient_customer_completed_order”, „woo_extra_email_recipient”, 10, 2);

I to wszystko! Mam nadzieję, że okaże się, że te fragmenty okażą się przydatne, wszystkie zostały przetestowane i działają dobrze, ale jeśli wystąpią jakiekolwiek problemy, daj mi znać w sekcji komentarzy. Baw się dobrze! ��

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me