워드 프레스에 대한 나의 25 최고의 WooCommerce 스 니펫

  1. 1. 현재 읽고있는 내용 : 워드 프레스에 대한 나의 25 최고의 WooCommerce 스 니펫
  2. 2. 워드 프레스 파트 2에 대한 나의 25 최고의 WooCommerce 스 니펫

시간이 흘렀습니다… WooThemes에서 WooCommerce 전임 지원 기술자로 일하기 시작한 지 6 개월이 지났습니다. 이 6 개월 동안 WooCommerce에 대해 많은 것을 배웠고 많이 코딩했습니다 (읽기 많이!)의 우 커머스 관련 스 니펫 실제로 WooCommerce는 정말 강력한 도구이며 쉽게 확장 할 수 있습니다. 거의 모든 것에 사용할 수있는 후크가 많기 때문에 WooCommerce가 그토록 좋은 이유입니다. 지난 몇 개월 동안 내가 쓰거나 수정 한 스 니펫 목록은 다음과 같습니다. 이 모든 스 니펫은 테마 폴더 내의 functions.php 파일에 붙여 넣어야합니다.


1 – WooCommerce 관리 이메일에 지불 유형 추가

add_action ( 'woocommerce_email_after_order_table', 'add_payment_method_to_admin_new_order', 15, 2);

add_payment_method_to_admin_new_order ($ order, $ is_admin_email) {
if ($ is_admin_email) {
에코

결제 방법 : '. $ order-> payment_method_title '

'; } }

2 – 페이지 당 / 라인 당 제품 판매

remove_action ( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15);
add_action ( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15);

if (! function_exists ( 'woocommerce_output_upsells')) {
woocommerce_output_upsells () {
woocommerce_upsell_display (3,3); // 3 개의 행에 3 개의 제품 표시
}
}

3 – 샵 페이지에서 제품 카테고리 제거

add_action ( 'pre_get_posts', 'custom_pre_get_posts_query');

custom_pre_get_posts_query ($ q) 함수 {

if (! $ q-> is_main_query ()) 반환;
if (! $ q-> is_post_type_archive ()) 반환;

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

$ q-> set ( 'tax_query', 배열 (배열 (
'taxonomy'=> 'product_cat',
'field'=> '슬러그',
'terms'=> array ( 'color', 'flavor', 'spices', 'vanilla'), // 상점 페이지에이 카테고리의 제품을 표시하지 않습니다
'operator'=> 'NOT IN'
)));

}

remove_action ( 'pre_get_posts', 'custom_pre_get_posts_query');

}

4 – 빠른 문자열 번역

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

함수 translate_text ($ translated) {
$ translated = str_ireplace ( '선택 및 옵션', '선택', $ 번역);
반환 $ 번역;
}

5 – WooCommerce 카테고리 위젯에서 카테고리 제외

add_filter ( 'woocommerce_product_categories_widget_args', 'woo_product_cat_widget_args');

함수 woo_product_cat_widget_args ($ cat_args) {

$ cat_args [ 'exclude'] = 배열 ​​( '16');

$ cat_args를 반환;
}

6 – 제품 변형에 사용자 정의 필드 추가

// 표시 필드
add_action ( 'woocommerce_product_after_variable_attributes', 'variable_fields', 10, 2);
// 새로운 변형을위한 필드를 추가하는 JS
add_action ( 'woocommerce_product_after_variable_attributes_js', 'variable_fields_js');
// 변이 입력란 저장
add_action ( 'woocommerce_process_product_meta_variable', 'variable_fields_process', 10, 1);

function variable_fields ($ loop, $ variation_data) {?>


7 –“품절”로“재고 없음”교체

add_filter ( 'woocommerce_get_availability', 'availability_filter_func');

기능 가용성 _ 필터 _ 기능 ($ availability)
{
$ availability [ 'availability'] = str_ireplace ( '재고 없음', '판매', $ availability [ 'availability']);
$ availability 반환;
}

8 –“장바구니에 추가”버튼 대신“장바구니에 이미 제품”표시

/ **
* 단일 제품 페이지에서 장바구니에 추가 텍스트를 변경하십시오.
* /
add_filter ( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text');

함수 woo_custom_cart_button_text () {

글로벌 $ woocommerce;

foreach ($ woocommerce-> cart-> get_cart () as $ cart_item_key => $ values) {
$ _product = $ values ​​[ '데이터'];

if (get_the_ID () == $ _product-> id) {
return __ ( '이미 장바구니에 있습니다-다시 추가 하시겠습니까?', 'woocommerce');
}
}

return __ ( '장바구니에 담기', 'woocommerce');
}

/ **
* 제품 아카이브에서 장바구니에 추가 텍스트를 변경하십시오.
* /
add_filter ( 'add_to_cart_text', 'woo_archive_custom_cart_button_text');

함수 woo_archive_custom_cart_button_text () {

글로벌 $ woocommerce;

foreach ($ woocommerce-> cart-> get_cart () as $ cart_item_key => $ values) {
$ _product = $ values ​​[ '데이터'];

if (get_the_ID () == $ _product-> id) {
return __ ( '이미 장바구니', 'woocommerce');
}
}

return __ ( '장바구니에 담기', 'woocommerce');
}

9 – 카테고리 뷰에서 제품 숨기기

add_filter ( 'woocommerce_subcategory_count_html', 'woo_remove_category_products_count');

함수 woo_remove_category_products_count () {
반환;
}

10 – 계정 계산 필드를 작성해야합니다

add_filter ( 'woocommerce_checkout_fields', 'woo_filter_account_checkout_fields');

함수 woo_filter_account_checkout_fields ($ fields) {
$ fields [ 'account'] [ 'account_username'] [ '필수'] = true;
$ fields [ 'account'] [ 'account_password'] [ '필수'] = true;
$ fields [ 'account'] [ 'account_password-2'] [ '필수'] = true;

리턴 $ fields;
}

11 – 제품 탭 이름 바꾸기

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

$ tabs [ '설명'] [ '제목'] = '추가 정보';

$ 탭 반환;
}

12 – WooCommerce 제품 카테고리 목록

$ args = 배열 ​​(
'숫자'=> $ 숫자,
'orderby'=> $ orderby,
'order'=> $ order,
'hide_empty'=> $ hide_empty,
'include'=> $ ids
);

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

$ count = count ($ product_categories);
if ($ count> 0) {
에코 "";
}

13 – 샵 페이지 제목 교체

add_filter ( 'woocommerce_page_title', 'woo_shop_page_title');

함수 woo_shop_page_title ($ page_title) {

if ( 'Shop'== ​​$ page_title) {
"나의 새로운 제목"을 반환;
}
}

14 – 위젯 제목 변경

/ *
* 위젯 제목 변경
* /
add_filter ( 'widget_title', 'woo_widget_title', 10, 3);

함수 woo_widget_title ($ title, $ instance, $ id_base) {

if ( 'onsale'== $ id_base) {
"나의 새로운 제목"을 반환;
}
}

15 – WooCommerce 기본 설정 제거

add_filter ( 'woocommerce_catalog_settings', 'woo_remove_catalog_options');

함수 woo_remove_catalog_options ($ catalog) {

설정 해제 ($ catalog [23]); // 트림 제로 (아니오)
설정 해제 ($ catalog [22]); // 2 소수
설정 해제 ($ catalog [21]); // 소수점 (.)
설정 해제 ($ catalog [20]); // 천 셉 (,)
설정 해제 ($ catalog [19]); // 통화 위치 (왼쪽)
설정 해제 ($ catalog [18]); // 통화 위치 (왼쪽)
설정 해제 ($ catalog [5]); // ajax 쇼핑 카트에 담기 (no)

$ 카탈로그를 반환;
}

16 –“보낸 사람”전자 메일 주소 변경

woo_custom_wp_mail_from () 함수 {
글로벌 $ woocommerce;
return html_entity_decode ( '[email protected]');
}
add_filter ( 'wp_mail_from', 'woo_custom_wp_mail_from', 99);

17 – WooCommerce 이메일에서 이름을 디코딩

woo_custom_wp_mail_from_name () 함수 {
글로벌 $ woocommerce;
return html_entity_decode (get_option ( 'woocommerce_email_from_name'));
}
add_filter ( 'wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99);

woo_custom_wp_mail_from () 함수 {
글로벌 $ woocommerce;
return html_entity_decode (get_option ( 'woocommerce_email_from'));
}
add_filter ( 'wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99);

18 – 반품 관련 제품 ID

함수 woo_get_featured_product_ids () {
// 캐시에서로드
$ featured_product_ids = get_transient ( 'wc_featured_products');

// 유효한 캐시가 발견되었습니다
if (false! == $ featured_product_ids)
$ featured_product_ids를 반환합니다.

$ featured = get_posts (배열 (
'post_type'=> array ( 'product', 'product_variation'),
'posts_per_page'=> -1,
'post_status'=> '게시',
'meta_query'=> 배열 (
정렬(
'key'=> '_visibility',
'value'=> 배열 ( 'catalog', 'visible'),
'compare'=> 'IN'
),
정렬(
'key'=> '_featured',
'value'=> '예'
)
),
'fields'=> 'id => 부모'
));

$ 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);

$ featured_product_ids를 반환합니다.
}

19 – 주소 페이지를 편집하기 위해 사용자 정의 필드 추가

// 주소 페이지를 편집 할 필드 추가
함수 woo_add_edit_address_fields ($ fields) {

$ new_fields = 배열 ​​(
'date_of_birth'=> 배열 (
'label'=> __ ( '생년월일', 'woocommerce'),
'필수'=> 거짓,
'class'=> array ( 'form-row'),
),
);

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

리턴 $ fields;

}

add_filter ( 'woocommerce_default_address_fields', 'woo_add_edit_address_fields');

20 – Onsale 제품 카탈로그 단축 코드 표시

woocommerce_sale_products ($ atts) {

글로벌 $ woocommerce_loop;

추출 (shortcode_atts (배열 (
'per_page'=> '12',
'columns'=> '4',
'orderby'=> '날짜',
'order'=> 'desc'
), $ atts));

$ woocommerce_loop [ 'columns'] = $ 열;

$ args = 배열 ​​(
'post_type'=> '제품',
'post_status'=> '게시',
'ignore_sticky_posts'=> 1,
'posts_per_page'=> $ per_page,
'orderby'=> $ orderby,
'order'=> $ order,
'meta_query'=> 배열 (
정렬(
'key'=> '_visibility',
'value'=> 배열 ( 'catalog', 'visible'),
'compare'=> 'IN'
),
정렬(
'key'=> '_sale_price',
'value'=> 0,
'compare'=> '>',
'type'=> 'NUMERIC'
)
)
);
query_posts ($ args);
ob_start ();
woocommerce_get_template_part ( 'loop', 'shop');
wp_reset_query ();

반환 ob_get_clean ();
}

add_shortcode ( 'sale_products', 'woocommerce_sale_products');

21 – 판매 중 제품을 가지고

함수 woo_have_onsale_products () {

글로벌 $ woocommerce;

// 판매중인 제품 받기
$ product_ids_on_sale = array_filter (woocommerce_get_product_ids_on_sale ());

if (! empty ($ product_ids_on_sale)) {
true를 반환;
} else {
거짓을 반환;
}

}

// 예:
if (woo_have_onsale_products ()) {
에코 '판매 제품이 있습니다';
} else {
'비 판매 제품 없음'에코;
}

22 – 최소 주문량 설정

add_action ( 'woocommerce_checkout_process', 'wc_minimum_order_amount');
기능 wc_minimum_order_amount () {
글로벌 $ woocommerce;
$ 최소 = 50;
if ($ woocommerce-> cart-> get_cart_total (); < $minimum ) {
$woocommerce->add_error (sprintf ( '주문을하려면 최소 % s의 주문이 있어야합니다.', $ minimum));
}
}

23 – 샵 페이지에서 가격, 날짜 또는 제목으로 주문

add_filter ( 'woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby');

custom_default_catalog_orderby () 함수 {
반환 기일'; // 제목과 가격을 사용할 수도 있습니다
}

24 – 장바구니에 추가 버튼을 체크 아웃 페이지로 리디렉션

add_filter ( 'add_to_cart_redirect', 'redirect_to_checkout');

함수 redirect_to_checkout () {
글로벌 $ woocommerce;
$ checkout_url = $ woocommerce-> cart-> get_checkout_url ();
$ checkout_url을 반환;
}

25 – 주문 완료시 이메일 수신자 추가

함수 woo_extra_email_recipient ($ recipient, $ object) {
$ recipient = $ recipient입니다. ', [email protected]';
$받는 사람 반환;
}
add_filter ( 'woocommerce_email_recipient_customer_completed_order', 'woo_extra_email_recipient', 10, 2);

그리고 그게 다야! 이 스 니펫이 유용하고 모두 테스트되었으며 모두 정상적으로 작동하지만 문제가 발생하면 의견 섹션에 알려주십시오. 즐기세요! ��

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map