Настройка метки данных продукта WooCommerce без плагина - WEIGHT - PullRequest
3 голосов
/ 22 января 2020

Я бы хотел изменить мета-метку продукта с «Вес» на «Квадратные ноги» как на заднем, так и на переднем концах.

Я пробовал это и несколько [сотен] вариантов без успех:

add_filter( 'woocommerce_register_post_type_product', 'custom_product_labels' );

function custom_product_labels( $args ) {
    //
    // change labels in $args['labels'] array
    //
    $args['labels']['_weight'] = 'Square Feet';
    return $args;

Я успешно отредактировал ЕДИНИЦЫ с помощью этого:

add_filter( 'woocommerce_product_settings', 'add_woocommerce_dimension_units' );

function add_woocommerce_dimension_units( $settings ) {
  foreach ( $settings as &$setting ) {

    if ( $setting['id'] == 'woocommerce_dimension_unit' ) {

      $setting['options']['feet'] = __( 'ft' );  // foot
    }

    if ( $setting['id'] == 'woocommerce_weight_unit' ) {

      $setting['options']['sq ft'] = __( 'sq ft' );  // square feet
    }
  }

  return $settings;
}

Но я все еще не могу понять, как подключить метки измерений для их редактирования. Важно отметить , что я не хочу добавлять мета-единицу «квадратные футы», потому что у нас уже есть тысячи продуктов, заполненных данными в квадратных футах в поле «Вес».

Мой быстрый обходной путь - найти реальный код на этих страницах и отредактировать их. Но это плохое решение.

woocommerce / includes / admin / meta-box / views / html -product-data-shipping. php

woocommerce / includes / w c -formatting-functions. php

woocommerce / includes / w c -template-functions. php

Редактировать: вот страница, показывающая использование. https://homedesigningservice.com/product/cape-house-plan-10034-cp/

Заранее спасибо за спасение моего тающего мозга. : -)

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Вы можете использовать этот фрагмент

    add_filter( 'gettext', 'theme_change_comment_field_names', 20, 3 );

function theme_change_comment_field_names( $translated_text, $text, $domain ) {

                switch ( $translated_text ) {

                    case 'Weight' :

                        $translated_text = __( 'Square Feet', $domain );
                        break;

                    case 'weight' :

                        $translated_text = __( 'Square Feet', $domain );
                        break;
                }


            return $translated_text; 
    }

enter image description here

1 голос
/ 22 января 2020

В Woo есть фильтр для внешнего интерфейса, но нет фильтра для изменения метки бэкэнда. Поэтому используйте приведенный ниже код, и он не будет конфликтовать ни с каким другим лейблом ... gettext Лакшмана изменит вес в любом месте сайта ...

add_filter( 'woocommerce_display_product_attributes', 
 'prefix_change_weight_label_to_square_feet', 10, 2 );

 function prefix_change_weight_label_to_square_feet( $product_attributes, $product ) {

   // Change Weight to Square Feet
   $product_attributes[ 'weight' ]['label'] = __('Square Feet');

   return $product_attributes;
}

// edit WEIGHT label to SQUARE FEET

add_action( 'admin_footer', function(){

   $currentPostType = get_post_type();

   if( $currentPostType != 'product' ) return;
?>
   <script>
    (function($){
        $(document).ready(function(){
            if ( jQuery('label[for="_weight"]').length ) {

                jQuery('label[for="_weight"]').text("Square Feet");
            }
        });
    })(jQuery);
</script>

 <?php

});
...