가변 제품 속성:표시된 각 라디오 버튼 텍스트 값 사용자 정의
WoCommerce에서 WC 변형 라디오 버튼 플러그인(8manos 기준)을 사용하여 일반적인 드롭다운 선택기를 Radio Buttons로 교체하고 있습니다.
자녀 테마에 아래 코드를 추가했습니다.function.php
:
// Display the product variation price inside the variations dropdown.
add_filter( 'woocommerce_variation_option_name', 'display_price_in_variation_option_name' );
function display_price_in_variation_option_name( $term ) {
global $wpdb, $product;
if ( empty( $term ) ) return $term;
if ( empty( $product->id ) ) return $term;
$result = $wpdb->get_col( "SELECT slug FROM {$wpdb->prefix}terms WHERE name = '$term'" );
$term_slug = ( !empty( $result ) ) ? $result[0] : $term;
$query = "SELECT postmeta.post_id AS product_id
FROM {$wpdb->prefix}postmeta AS postmeta
LEFT JOIN {$wpdb->prefix}posts AS products ON ( products.ID = postmeta.post_id )
WHERE postmeta.meta_key LIKE 'attribute_%'
AND postmeta.meta_value = '$term_slug'
AND products.post_parent = $product->id";
$variation_id = $wpdb->get_col( $query );
$parent = wp_get_post_parent_id( $variation_id[0] );
if ( $parent > 0 ) {
$_product = new WC_Product_Variation( $variation_id[0] );
return '' ."<font size='3' face='Lato'>". wp_kses( woocommerce_price( $_product->get_price() ), array() ) . "<font size='3' color='red' face='Lato' style='normal' weight='300'>".' - ('.$term.')';
}
return $term;
}
가능한지 확인하기 위해 네 가지 변형 이름을 모두 스타일링 할 수 있었습니다.하지만 각각 4가지 색상이 필요합니다.그게 제가 도움이 필요한 부분입니다.
아래 이미지는 제가 원하는 것을 보여줍니다(각 "옵션"마다 다른 색상).
"Color" 변형을 무시합니다."Tab" 변형만 수정하면 됩니다.
현재 4가지 라디오 옵션의 각 변경명은 '레드'이며, 각각 다른 색상으로 부탁드립니다.
그걸 달성하려면 내 코드에 무엇을 바꿔야 합니까?
감사해요.
2021년 업데이트
다음은 "Tab" 속성 라디오 버튼 사용자 지정 표시된 태그를 속성 슬러그와 의 조합에 따라 다른 클래스 값을 가진 텍스트로 표시하는 "Tab" 속성 라디오 버튼 주위에만 표시되는 당신의 다시 찾은 코드입니다.
따라서 'pa_tab' 속성에 대해서만 사용자 지정 텍스트가 표시된 각 라디오 버튼에 CSS 스타일 색상을 적용하여 해당 CSS 규칙을 활성 테마에 추가할 수 있습니다.style.css
…
수정된 코드는 다음과 같습니다.
// Custom function that get the variation id from product attribute option name
function get_variation_id_from_option_name( $term_slug, $taxonomy, $product_id ) {
global $wpdb;
return $wpdb->get_var( $wpdb->prepare( "
SELECT pm.post_id
FROM {$wpdb->prefix}postmeta pm
LEFT JOIN {$wpdb->prefix}posts p ON pm.post_id = p.ID
WHERE pm.meta_key LIKE '%s'
AND pm.meta_value = '%s'
AND p.post_parent = %d
", 'attribute_' . $taxonomy, $term_slug, $product_id ) );
}
// Display the product variation price inside the variations dropdown.
add_filter( 'woocommerce_variation_option_name', 'display_price_in_variation_option_name' );
function display_price_in_variation_option_name( $option_name ) {
global $product;
$taxonomy = 'pa_tab'; // HERE Define the targetted product attribute taxonomy pa_color
$term = get_term_by( 'name', $option_name, $taxonomy );
if ( is_admin() || ! is_a( $term, 'WP_Term' ) || ! is_a( $product, 'WC_Product' ) ) {
return $option_name;
}
$variation_id = get_variation_id_from_option_name( $term->slug, $taxonomy, $product->get_id() );
if ( $variation_id > 0 ) {
$variation = wc_get_product( $variation_id );
$price_html = wc_price( wc_get_price_to_display( $variation ) );
if ( has_term( $option_name, $taxonomy, $product->get_id() ) ) {
$output = ' <span class="'.$taxonomy.'-price">' . strip_tags( $price_html ) . '</span><span class="'.$taxonomy.'-'.$term->slug.'"> - ('.$option_name.')</span>';
} else {
$output = ' ' . $option_name;
}
return $output;
}
return $option_name;
}
코드가 작동합니다.활성 하위 테마(또는 테마)의 php 파일 또는 플러그인 파일에 있습니다.
이 코드는 테스트되고 작동합니다.
생성된 html 코드는 다음과 같습니다.
<td class="value">
<div>
<input type="radio" name="attribute_pa_color" value="option-blue" id="pa_tab_v_option-blue">
<label for="pa_tab_v_option-blue">
<span class="pa_tab-price">$99.00</span>
<span class="pa_tab-option-blue"> - (Option Blue)</span>
</label>
</div>
<div>
<input type="radio" name="attribute_pa_color" value="option-green" id="pa_tab_v_option-green">
<label for="pa_tab_v_option-green">
<span class="pa_tab-price">$299.00</span>
<span class="pa_tab-option-green"> - (Option Green)</span>
</label>
</div>
<!-- ... / ... ... -->
</td>
따라서 CSS 규칙을 사용하여 사용자 지정 텍스트를 표시하는 특정 라디오 버튼을 대상으로 합니다.
span.pa_tab-price {
font-family: lato, sans-serif;
font-size: medium;
}
span.pa_tab-option-blue, span.pa_tab-option-green,
span.pa_tab-option-purple, span.pa_tab-option-orange {
font-family: lato, sans-serif;
font-size: medium;
font-style: normal;
font-weight: 300;
}
span.pa_tab-option-blue {
color: blue;
}
span.pa_tab-option-green {
color: green;
}
span.pa_tab-option-purple {
color: purple;
}
span.pa_tab-option-orange {
color: orange;
}
이것은 단지 예시일 뿐입니다.
언급URL : https://stackoverflow.com/questions/43435329/variable-product-attribute-customizing-each-displayed-radio-buttons-text-value
'prosource' 카테고리의 다른 글
Google Dogfooding Angular.js? (0) | 2023.10.15 |
---|---|
뷰 엔진이란?실제로는 어떤 역할을 합니까? (0) | 2023.10.15 |
테이블에서 행 선택, 필드 값이 나올 때까지 행 무시 (0) | 2023.10.10 |
MySQL ERROR 2026 - SSL 연결 오류 - Ubuntu 20.04 (0) | 2023.10.10 |
"PHP Fatal error:"를 해결하려면 어떻게 해야 합니까?알 수 없음: 여는 데 실패했습니다." (0) | 2023.10.10 |