WordPress — woocommerce: измените строку «SKU» внутри одного продукта meta.php

#php #wordpress #woocommerce #overriding

#php #wordpress #woocommerce #переопределение

Вопрос:

Я просто пытаюсь изменить строку «SKU», чтобы показать что-то еще внутри одного продукта meta.php досье. Я использую дочернюю тему. Родительская тема получила woocommerce.php файл по пути /inc/compat/. Из-за этого, насколько я понял, я не могу переопределить, просто изменив meta.php внутри темы.

Итак, я попытался добавить эту функцию внутри woocommerce.php родительской темы:

 function translate_woocommerce($translation, $text, $domain) {
    if ($domain == 'woocommerce') {
        switch ($text) {
            case 'SKU':
                $translation = 'TEST';
                break;
            case 'SKU:':
                $translation = 'TEST';
                break;
        }
    }
    return $translation; }

add_filter('gettext', 'translate_woocommerce', 10, 3);
 

Но это не работает.
Не могли бы вы мне помочь?

Большое вам спасибо.

Просто небольшое обновление: если я вставлю приведенный выше код в functions.php из родительской или дочерней темы я вижу, что строка SKU изменена внутри панели управления WordPress (пожалуйста, проверьте следующее изображение):

введите описание изображения здесь

Ответ №1:

Попробуйте увеличить приоритет фильтра.

Поэтому:

 add_filter( 'gettext', 'translate_woocommerce', 9999, 3 );
function translate_woocommerce( $translation, $text, $domain ) {
    if ( $domain == 'woocommerce' ) {
        switch ( $text ) {
            case 'SKU':
                $translation = 'TEST';
                break;
            case 'SKU:':
                $translation = 'TEST';
                break;
        }
    }
    return $translation;
}
 

Я протестировал ваш код, и он работает для меня.

Как сообщается в документации фильтра: https://developer.wordpress.org/reference/hooks/gettext / используя переключатель с $text переменной, вы ссылаетесь на непереведенный текст.

Возможно, вы захотите использовать $translation вместо этого для ссылки на переведенный текст, видимый во внешнем интерфейсе / бэкэнде.