W artykule:
- 1-Dodaj typ płatności do wiadomości e-mail administratora WooCommerce
- 2-Up-sprzedaje produkty na stronę / na linię
- 3-Usuń kategorie produktów ze strony sklepu
- 4-szybko Przetłumacz dowolny ciąg
- 5-Wyklucz kategorię z widżetu kategorii WooCommerce
- 6-Dodaj niestandardowe pole do zmiany produktu
- 7-Zastąp „Brak w magazynie „przez ” sprzedane”
- 8-Wyświetl przycisk” produkt już w Koszyku „zamiast” Dodaj do koszyka”
- 9-Ukryj ilość produktów w widoku kategorii
- 10-Make account checkout pola wymagane
- 11-zmiana nazwy karty produktu
- 12-Lista kategorii produktów WooCommerce
- 13-Zmień tytuł strony sklepu
- 14-zmiana tytułu widżetu
- 15-Usuń domyślne ustawienia WooCommerce
- 16-zmiana adresu e-mail” z”
- 17-dekoduj z nazwy w e-mailu WooCommerce
- 18-zwrot polecanych produktów ids
- 19-Dodaj niestandardowe pole do edycji strony adresowej
- 20-Display onsale products catalog shortcode
- 21-posiadaj produkty onsale
- 22-ustaw minimalną kwotę zamówienia
- 23-Zamów według ceny, daty lub tytułu na stronie sklepu
- 24-przekierowanie przycisku Dodaj do koszyka na stronę kasy
- 25-Dodaj odbiorcę wiadomości e-mail po zakończeniu zamówienia
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! 😉