- Статус
- Ожидается ответ автора
- Связанный плагин/тема
- Ultimate Membership Pro
- Теги темы
- Compatibility
Обзор проблемы
При использовании Ultimate Membership Pro с WPML Вы можете столкнуться с проблемой, при которой значения флажков, используемые в профилях участников и фильтрах каталога, не переводимы. Это не позволяет переведенным меткам корректно отображаться на переведенных страницах каталога или в формах.
Обходное решение
Перед продолжением убедитесь, что у Вас есть полная резервная копия сайта.
1- Удалите некорректные переводы
- Перейдите в WPML > Перевод строк
- Отфильтруйте по статусу «Перевод завершен»
- Найдите строки в поле с именем [ihc_user_fields]
- Выберите все эти строки и удалите их — это строки значений, и они не должны переводиться.
2- Измените шаблон фильтра на фронтенде
- Откройте: wp-content/plugins/indeed-membership-pro/public/views/listing_users-filter.php
- Найдите: строку 167 в блоке case ‘checkbox’
Замените:
<?php
foreach ($field['values'] as $v){
if (is_array($get_value)){
$checked = (in_array($v, $get_value)) ? 'checked' : '';
} else {
$checked = ($v==$get_value) ? 'checked' : '';
}
?>
<div class="iump-form-checkbox">
<input type="checkbox" name="<?php echo esc_attr($field['name']);?>[]" value="<?php echo esc_attr(ihc_correct_text($v));?>" <?php echo esc_attr($checked);?> />
<?php echo esc_html(ihc_correct_text($v));?>
</div>
<?php
}
?>
На:
<?php
foreach ($field['values'] as $v){
if (is_array($get_value)){
$checked = (in_array($v, $get_value)) ? 'checked' : '';
} else {
$checked = ($v==$get_value) ? 'checked' : '';
}
// WPML: Separate value and label
$wpml_original_value = ihc_correct_text($v);
$wpml_string_name = 'checkbox_option_' . $field['name'];
do_action( 'wpml_register_single_string', 'ihc', $wpml_string_name . '_' . sanitize_title($v), $wpml_original_value );
$wpml_translated_label = apply_filters( 'wpml_translate_single_string', $wpml_original_value, 'ihc', $wpml_string_name . '_' . sanitize_title($v) );
?>
<div class="iump-form-checkbox">
<input type="checkbox" name="<?php echo esc_attr($field['name']);?>[]" value="<?php echo esc_attr(ihc_correct_text($v));?>" <?php echo esc_attr($checked);?> />
<?php echo esc_html($wpml_translated_label); ?>
</div>
<?php
}
?>
3- Исправьте метки чекбоксов в форме регистрации
- Откройте: wp-content/plugins/indeed-membership-pro/classes/IndeedForms.php
- Найдите: функцию чекбокса (примерно на строке 129)
Замените:
$output .= ihc_correct_text( $v );На:
$output .= __( ihc_correct_text( $v ), 'ihc' );</ul>
4- Инициируйте регистрацию строк
- Посетите страницу каталога на фронтенде, чтобы загрузить новые строки.
- Перейдите в WPML > Перевод строк и переведите только недавно зарегистрированные строки в домене «ihc» (с именами наподобие checkbox_option_name).