#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
вместо этого для ссылки на переведенный текст, видимый во внешнем интерфейсе / бэкэнде.