Woocommerce의 "Choose an option" 버튼 텍스트를 변경하려면 어떻게 해야 합니까?
이 PHP 코드를 변경하려면 어떻게 해야 합니까 WordPress용 Woocommerce 플러그인의 선택 요소 ID에 따라 옵션을 선택하십시오.wc-template-function에서 올바른 PHP 파일을 찾은 것 같습니다.php 하지만 PHP 스킬 부족이 발목을 잡고 있습니다.지금까지의 내용은 다음과 같습니다.
if ( ! function_exists( 'wc_dropdown_variation_attribute_options' ) ) {
/**
* Output a list of variation attributes for use in the cart forms.
*
* @param array $args
* @since 2.4.0
*/
function wc_dropdown_variation_attribute_options( $args = array() ) {
$args = wp_parse_args( $args, array(
'options' => false,
'attribute' => false,
'product' => false,
'selected' => false,
'name' => '',
'id' => '',
'class' => '',
'show_option_none' => __( 'Choose an option', 'woocommerce' ),
'show_option_color' => __( 'Choose a color', 'woocommerce' ),
'show_option_size' => __( 'Choose a size', 'woocommerce' )
) );
$options = $args['options'];
$product = $args['product'];
$attribute = $args['attribute'];
$name = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title( $attribute );
$id = $args['id'] ? $args['id'] : sanitize_title( $attribute );
$class = $args['class'];
if ( empty( $options ) && ! empty( $product ) && ! empty( $attribute ) ) {
$attributes = $product->get_variation_attributes();
$options = $attributes[ $attribute ];
}
echo '<select id="' . esc_attr( $id ) . '" class="' . esc_attr( $class ) . '" name="' . esc_attr( $name ) . '" data-attribute_name="attribute_' . esc_attr( sanitize_title( $attribute ) ) . '">';
if ( $args['show_option_none'] ) {
echo '<option value="">' . esc_html( $args['show_option_none'] ) . '</option>';
}
if ( $args['$id_colors'] ) {
echo '<option value="">' . esc_html( $args['show_option_color'] ) . '</option>';
}
if ( $args['$id_sizes'] ) {
echo '<option value="">' . esc_html( $args['show_option_size'] ) . '</option>';
}
if ( ! empty( $options ) ) {
if ( $product && taxonomy_exists( $attribute ) ) {
// Get terms if this is a taxonomy - ordered. We need the names too.
$terms = wc_get_product_terms( $product->id, $attribute, array( 'fields' => 'all' ) );
foreach ( $terms as $term ) {
if ( in_array( $term->slug, $options ) ) {
echo '<option value="' . esc_attr( $term->slug ) . '" ' . selected( sanitize_title( $args['selected'] ), $term->slug, false ) . '>' . apply_filters( 'woocommerce_variation_option_name', $term->name ) . '</option>';
}
}
} else {
foreach ( $options as $option ) {
// This handles < 2.4.0 bw compatibility where text attributes were not sanitized.
$selected = sanitize_title( $args['selected'] ) === $args['selected'] ? selected( $args['selected'], sanitize_title( $option ), false ) : selected( $args['selected'], $option, false );
echo '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $option ) ) . '</option>';
}
}
}
echo '</select>';
}
}
어레이에 show_option_color 및 show_option_size를 추가하고 if 문을 추가하려고 했지만 동작하지 않는 것 같습니다.선택 요소의 ID를 참조하여 올바른 선택 요소인지 여부에 따라 if 문을 작성하는 방법을 잘 모르겠습니다.
이것이 제가 목표로 하는 HTML입니다.
<select id="sizes" class="" name="attribute_sizes" data-attribute_name="attribute_sizes">Want this to say Choose a size</select>
<select id="colors" class="" name="attribute_sizes" data-attribute_name="attribute_sizes">Want this to say Choose a color</select>
변수.php 코드 행 27 - 38:
<?php foreach ( $attributes as $attribute_name => $options ) : ?>
<tr>
<td class="label"><label for="<?php echo sanitize_title( $attribute_name ); ?>"><?php echo wc_attribute_label( $attribute_name ); ?></label></td>
<td class="value">
<?php
$selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $product->get_variation_default_attribute( $attribute_name );
wc_dropdown_variation_attribute_options( array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ) );
echo end( $attribute_keys ) === $attribute_name ? '<a class="reset_variations" href="#">' . __( 'Clear selection', 'woocommerce' ) . '</a>' : '';
?>
</td>
</tr>
<?php endforeach;?>
이것은 커스텀 필터에 최적인 사용 사례입니다!먼저 가장 빠른 방법이 아닌 방법을 설명하겠습니다만, 코드를 읽어야 하는 다른 사람이 이해하기 가장 쉽고 깨끗한 방법입니다.또, 시간이 촉박할 때는, 「더러운」방법에 대해서도 설명하겠습니다.
빠른 방법:
이 정보가 표시되는 위치는 다음 파일에 있습니다.
/wp-content/plugins/woocommerce/templates/single-product/add-to-cart/variable.php
사용하시는 WooCommerce 버전에 따라 27호선 부근에 다음과 같은 행이 표시됩니다.
<option value=""><?php echo __( 'Choose an option', 'woocommerce' ) ?>…</option>
__() 함수는 'woocommerce' 텍스트 도메인을 사용하여 WordPress의 번역 시스템을 통해 첫 번째 매개 변수를 실행합니다.번역의 가능성을 유지하는 것이 가장 좋기 때문에, 번역 기능을 사용해 송신하기 전에 이 텍스트를 변경하고 싶다고 생각하고 있습니다.
이 코드 행은 모든 제품 변동 속성을 출력하는 루프 중에 발생합니다.이를 통해 $name 변수를 보고 어떤 속성이 출력되었는지 쉽게 확인할 수 있습니다.
$name 변수를 받아들여 이를 기반으로 문자열을 출력하는 함수를 만들어야 합니다.다음과 같이 됩니다.
function get_text_for_select_based_on_attribute($attribute) {
// Find the name of the attribute for the slug we passed in to the function
$attribute_name = wc_attribute_label($attribute);
// Create a string for our select
$select_text = 'Select a ' . $attribute_name;
// Send the $select_text variable back to our calling function
return $select_text;
}
변수 27행의 코드 앞에.php, 다음과 같은 것을 넣을 수 있습니다.
<?php
$select_text = get_text_for_select_based_on_attribute($name);
?>
그런 다음 $select_text 변수와 'Choose an option'을 맞바꾸기만 하면 됩니다.
<option value=""><?php echo __( $select_text, 'woocommerce' ) ?>…</option>
이 모든 작업을 템플릿 덮어쓰기로 하는 것을 잊지 마십시오.그렇지 않으면 다음 업데이트 시 커스터마이즈가 손실됩니다.
http://docs.woothemes.com/document/template-structure/
청소 방법:
이를 위해 보다 효율적이고 확장 가능한 방법은 이를 통과시키기 위한 사용자 정의 필터를 추가하는 것입니다.몇 가지 추가 절차이지만 제품에 따라 개별적으로 기능을 덮어쓰려는 경우 커스텀 로직을 쉽게 추가할 수 있습니다.
먼저 의미심장한 이름의 커스텀필터를 만들어 기능 어딘가에 배치합니다.주제 php 파일:
add_filter('variable_product_select_text', 'get_text_for_select_based_on_attribute', 10, 1);
그 다음에 변수에서.php 파일은 함수를 직접 호출하는 대신 새 필터를 통과시킵니다.
$select_text = apply_filters('variable_product_select_text', $name);
이와 같은 경우에 커스텀필터를 설정하는 데 시간이 좀 걸리지만 기존 코드를 더 이상 수정할 필요 없이 기능을 쌓거나 끌 수 있기 때문에 유지보수가 용이하다는 장점이 있습니다.
WC 2.4 업데이트
WooCommerce 버전 2.4에서는 속성과 관련 선택을 얻는 다른 방법이 도입되었습니다.아직 필터를 제공하지 않았기 때문에 위의 방법으로 wc_dropdown_variation_attribute_options 함수를 덮어쓸 것을 권장합니다.따라서 전체 기능을 복사하여 테마 기능에 붙여넣을 수 있습니다.선언문부터 시작하는 php 파일, 색상이나 크기가 아닌 경우 선택한 텍스트에 변수를 추가합니다.
//Don't include the if(!function_exists(...) part.
wc_dropdown_variation_attribute_options($args = array()) {
// Uses the same function as above, or optionally a custom filter
$select_text = get_text_for_select_based_on_attribute($args['attribute']);
wc_dropdown_variation_attribute_options( $args = array() ) {
$args = wp_parse_args( $args, array(
'options' => false,
'attribute' => false,
'product' => false,
'selected' => false,
'name' => '',
'id' => '',
'class' => '',
'show_option_none' => __( $select_text, 'woocommerce' ),
'show_option_color' => __( 'Choose a color', 'woocommerce' ),
'show_option_size' => __( 'Choose a size', 'woocommerce' )
) );
// Put the rest of the function here
여기 있는 다른 답변들을 조합하여 이 작업을 수행했는데, 제게는 잘 작동했습니다.
이것은 WooCoommerce 3.3.5를 사용하여 이루어졌으며 필터가 비교적 최근에 추가되었다고 가정합니다.
는 ''에 합니다.wc_dropdown_variation_attribute_options()
★★★★★★ 。
// define the woocommerce_dropdown_variation_attribute_options_args callback
function filter_woocommerce_dropdown_variation_attribute_options_args( $array ) {
// Find the name of the attribute for the slug we passed in to the function
$attribute_name = wc_attribute_label($array['attribute']);
// Create a string for our select
$select_text = 'Select a ' . $attribute_name;
$array['show_option_none'] = __( $select_text, 'woocommerce' );
return $array;
};
// add the filter
add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'filter_woocommerce_dropdown_variation_attribute_options_args', 10, 1 );
이게 도움이 됐으면 좋겠네요.
나는 WC 2.5로 방법을 찾았다.이것을 함수에 추가합니다.php:
function my_dropdown_variation_attribute_options_html($html, $args){
$html = str_replace('Choose an option', 'Choose', $html);
return $html;
}
add_filter('woocommerce_dropdown_variation_attribute_options_html', 'my_dropdown_variation_attribute_options_html', 10, 2);
실제로 커스터마이즈 할 수 있는 더 쉬운 방법이 있습니다.
WC의 핵심 파일 wc-template-functions를 보시면 됩니다.php wc_syslog_syslogs_syslogs 함수 내의 배열은 실제로 다음과 같은 키 값 쌍을 가진 인수임을 알 수 있습니다.
'options' => false,
'attribute' => false,
'product' => false,
'selected' => false,
'name' => '',
'id' => '',
'class' => '',
'show_option_none' => __( 'Choose an option', 'woocommerce' )
이제 변수 함수에서 동일한 키 값 쌍을 변경하기만 하면 됩니다.php 템플릿파일그래서 Choose An Option 텍스트 대신 드롭다운라벨을 표시하고 싶어서 fu를 변경합니다.
wc_dropdown_variation_attribute_options(
array(
'options' => $options,
'attribute' => $attribute_name,
'product' => $product,
'selected' => $selected,
'show_option_none' => wc_attribute_label( $attribute_name )
)
);
다른 쌍들도 마찬가지입니다.이게 도움이 됐으면 좋겠군덧붙여서, 이것은 WC 2.4+에서만 동작하므로 주의해 주세요.
여기 WC > 2.4에 대한 매우 간단한 솔루션이 있습니다.이 솔루션에서는 함수를 다시 쓰거나 함수를 복잡하게 만들지 않습니다.php..
변수를 추가합니다.php 파일을 테마에 맞춥니다(http://docs.woothemes.com/document/template-structure/), 및 (27행부터) 변경해 주세요.
<?php foreach ( $attributes as $attribute_name => $options ) : ?>
<tr>
<td class="label"><label for="<?php echo sanitize_title( $attribute_name ); ?>"><?php echo wc_attribute_label( $attribute_name ); ?></label></td>
<td class="value">
<?php
$selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $product->get_variation_default_attribute( $attribute_name );
wc_dropdown_variation_attribute_options( array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ) );
echo end( $attribute_keys ) === $attribute_name ? '<a class="reset_variations" href="#">' . __( 'Clear selection', 'woocommerce' ) . '</a>' : '';
?>
</td>
</tr><?php endforeach;?>
다음과 같이 입력합니다.
<?php
$variations_arr = array();
foreach ( $attributes as $attribute_name => $options ) :
ob_start(); ?>
<tr>
<td class="label"><label for="<?php echo sanitize_title( $attribute_name ); ?>"><?php echo wc_attribute_label( $attribute_name ); ?></label></td>
<td class="value">
<?php $selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $product->get_variation_default_attribute( $attribute_name );
wc_dropdown_variation_attribute_options( array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ) );
echo end( $attribute_keys ) === $attribute_name ? '<a class="reset_variations" href="#">' . __( 'Clear selection', 'woocommerce' ) . '</a>' : ''; ?>
</td>
</tr>
<?php $variations_ob = ob_get_clean();
$variations_arr[wc_attribute_label($attribute_name)] = $variations_ob;
endforeach;
foreach ($variations_arr as $name => $ob) {
echo str_ireplace('choose an option', 'Choose '.$name, $ob );
} ?>
그러면 속성의 이름에 따라 'Choose an option'이 'Choose Size', 'Choose Color' 등으로 대체됩니다.
Woocommerce의 "Choose an option" 드롭다운 텍스트를 변경하려면 함수에 다음을 추가하십시오.테마에 php 파일이 있습니다.
add_filter('woocommerce_dropdown_variation_attribute_options_args', 'my_change_choose_an_option_text_func', 10, 2);
function my_change_choose_an_option_text_func($args){
$args['show_option_none'] = __( 'New Text', 'your_text_domain' );
return $args;
}
"Choose an option(옵션 선택)"을 대응하는 속성/변동 이름으로 대체하는 방법을 알고 싶다면 다음과 같이 하십시오.변수를 편집합니다.php 및 아래와 같은 코드를 찾습니다.
variable.php(wp-content/plugins/woocommerce/includes/variable.php) 파일을 열고 woocommerce로 변경합니다(행 41에서43으로). (이 3줄 코드 삭제)
$selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( urldecode( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ) : $product->get_variation_default_attribute( $attribute_name );
wc_dropdown_variation_attribute_options( array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ) );
echo end( $attribute_keys ) === $attribute_name ? apply_filters( 'woocommerce_reset_variations_link', '<a class="reset_variations" href="#">' . __( 'Clear', 'woocommerce' ) . '</a>' ) : '';
그런 다음 이 코드를 추가합니다.
wc_dropdown_variation_attribute_options
array( 'options' => $options,
'attribute' => $attribute_name,
'product' => $product,
'selected' => $selected,
'show_option_none'=> wc_attribute_label( $attribute_name )
) );
모든 WordPress 버전이 작동합니다. 감사합니다.
아직 관심 있는 사람을 위해 만든 코드 업데이트
add_filter( 'woocommerce_dropdown_variation_attribute_options_args',
fix_option', 10 );
function fix_option( $args ) {
$attr = get_taxonomy( $args['attribute'] );
$label = $attr->labels->name;
$fix = str_replace('Product', '', $label);
$fix = strtolower($fix); /
$args['show_option_none'] = apply_filters( 'the_title', 'Select a '.$fix );
}
언급URL : https://stackoverflow.com/questions/32170575/how-do-i-change-button-text-from-choose-an-option-in-woocommerce
'programing' 카테고리의 다른 글
Meteor를 이용한 API 호출 방법 (0) | 2023.03.21 |
---|---|
antMatchers는 무슨 뜻입니까? (0) | 2023.03.21 |
대응 - 하위 구성 요소가 값을 상위 양식에 다시 보낼 수 있습니까? (0) | 2023.03.16 |
응용 프로그램 구성 설정 저장 (0) | 2023.03.16 |
WordPress에서 특정 태그/카테고리가 있는 게시물을 선택하는 방법 (0) | 2023.03.16 |