wc-template-functions 내에서 WooCommerce 함수를 변경할 수 있습니까?php' 파일 또는 'functions'를 계속 사용할까요?php' 파일?
왜 WooCommerce의 기능 수정을 테마의 '기능' 안에 배치하는 것이 선호되는가?php' 파일?초과 근무로 인해 파일이 상당히 커질 수 있습니다.저는 일반적으로 훨씬 더 큰 파일보다 더 잘 정리된 작은 파일을 많이 갖는 것이 더 낫다고 생각합니다.
이 점을 염두에 두고 wc-template-functions를 복사하면 어떤 문제가 발생합니까?php' 및 'wc-syslog-syslog.syslog' 파일을 테마에 포함시키고(파일 계층을 유지하며) 이 파일들을 적절히 수정합니다.
덧붙여, 상대적인 초보자로부터 WooCommerce 플랫폼에 이르기까지, 파일, 후크, 액션, 템플릿의 모든 동작에 대한 아래의 이해에 대해서, 「네, 동작합니다」또는 「아닙니다」라고 대답할 수 있으면 고맙겠습니다.
이해:
- WooCommerce 함수는 'wc-template-functions'에 등록되어 있습니다.php' 파일입니다.이 설명의 목적상, 저는 다음 사항을 참고하고 싶습니다.
woocommerce_breadcrumb
엔트리를 입력합니다. - WooCommerce는 'wc-templates-hooks.php' 파일을 사용하여 다음과 같은 일반적인 엔트리를 사용하여 등록된 함수를 호출합니다.
add_action('woocommerce_before_main_content','woocommerce_breadcrumb', 20, 0 );
이것은 간단히 지시한다.woocommerce_breadcrumb
부르다woocommerce_before_main_content
갈고리를 채우다 - 그 후 WooCommerce는 다음을 수행하여 위의 내용을 출력할 수 있습니다.
do_action( 'woocommerce_before_main_content' );
필요한 경우이 경우 모든 템플릿파일 내에 있습니다.
하나, 둘, 셋 당신의 이해는 옳습니다.
단, 파일은wc-template-functions.php
그리고.wc-templates-hooks.php
테마에 유사한 파일을 배치해도 덮어쓰지 않기 때문에 테마에 파일을 배치해도 아무 것도 할 수 없습니다.
또한 특정 항목을 변경하고 싶을 때 파일을 일괄 복사/재지정하는 것도 좋지 않다고 생각합니다.클라이언트의 사이트가 크래시 되었을 때 유지해야 할 실제 변경을 찾기 위해 WooCommerce 템플릿 폴더 전체를 검색해야 했습니다.
분리하는 것은 문제될 것이 없습니다.functions.php
파일을 더 작고 관리하기 쉬운 파일로 만들 수 있습니다.그래서, 당신은...woocommerce-functions.php
WooCommerce 고유의 코드를 저장할 파일 이름을 지정합니다.
편집하여 몇 가지 생각을 확장합니다.
언제든지 WooCommerce(또는 WordPress 함수)에서 다음과 같은 패턴을 볼 수 있습니다.
if ( ! function_exists( 'some_function_name' ) ) {
function some_function_name() {
echo 'taco';
}
}
이 을 테마의 '', '마음대로', '마음대로'에 .function.php
의 WooCommerce를 합니다.some_function_name()
.
단, 플러그 가능 기능은 잠긴 위치에 잠기므로 테마/플러그인으로 재정의하여 이동할 수 없습니다.따라서 더 강력한 접근법은 후크에서 기능을 제거하고 다른 후크에 다시 추가하거나 사용자 지정 기능을 추가하거나 둘 다 추가하는 것입니다.다음은 사용자 지정 제목을 가격 이후로 이동하는 예입니다.
function kia_switch_loop_title(){
remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
add_action( 'woocommerce_after_shop_loop_item_title', 'kia_template_loop_product_title', 15 );
}
add_action( 'woocommerce_before_shop_loop_item', 'kia_switch_loop_title' );
function kia_template_loop_product_title() {
echo '<h4 class="we-do-what-we-want">' . get_the_title() . '</h4>';
}
관련 제품을 어떻게 분류해야 할지 고민하다가 해결책을 찾았습니다.누군가 필요할 때를 대비해서
function custom_remove_hook(){
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
add_action( 'woocommerce_after_single_product_summary', 'custom_function_to_sort_related', 22 );
}
add_action( 'woocommerce_after_single_product_summary', 'custom_remove_hook' );
function custom_function_to_sort_related( $args = array() ) {
global $product;
if ( ! $product ) {
return;
}
$defaults = array(
'posts_per_page' => 4,
'columns' => 4,
'orderby' => 'price', // @codingStandardsIgnoreLine.
'order' => 'desc'
);
$args = wp_parse_args( $args, $defaults );
// Get visible related products then sort them at random.
$args['related_products'] = array_filter( array_map( 'wc_get_product', wc_get_related_products( $product->get_id(), $args['posts_per_page'], $product->get_upsell_ids() ) ), 'wc_products_array_filter_visible' );
// Handle orderby.
$args['related_products'] = wc_products_array_orderby( $args['related_products'], $args['orderby'], $args['order'] );
// Set global loop values.
wc_set_loop_prop( 'name', 'related' );
wc_set_loop_prop( 'columns', apply_filters( 'woocommerce_related_products_columns', $args['columns'] ) );
wc_get_template( 'single-product/related.php', $args );
}
언급URL : https://stackoverflow.com/questions/42334598/can-i-modify-woocommerce-functions-within-the-wc-template-functions-php-file-o
'source' 카테고리의 다른 글
위조 방지 제품을 제공하려면 어떻게 해야 합니까?$.ajax를 사용하여 JSON 데이터를 게시할 때 토큰? (0) | 2023.03.28 |
---|---|
Woocommerce Variation 부모 Atribute (0) | 2023.03.28 |
MongoDB 데이터 디렉토리 /data/db를 찾을 수 없습니다. (0) | 2023.03.23 |
주문 속성에 직접 액세스하지 마십시오(WooCommerce 3.0). (0) | 2023.03.23 |
여러 인수로 함수를 바인딩하는 AngularJS 디렉티브 (0) | 2023.03.23 |