- 状态
- 等待作者
- 相关插件/主题
- 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)。