WPML
状态
等待作者
相关插件/主题
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
  • 查找:case ‘checkbox’ 下的第 167 行
  • 将:

<?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
  • 查找:checkbox 函数(第 129 行左右)
  • 将:

$output .= ihc_correct_text( $v );
替换为:
$output .= __( ihc_correct_text( $v ), 'ihc' );</ul>

4- 触发字符串注册

  • 访问前端的目录页面以加载新字符串。
  • 前往 WPML > 字符串翻译,仅翻译“ihc”域下新注册的字符串(名称类似于 checkbox_option_name)。

所有已知问题 →