- ステータス
- 開発者からの返答待ち
- 関連するプラグイン/テーマ
- Ultimate Membership Pro
- トピックタグ
- Compatibility
問題の概要
WPMLで Ultimate Membership Pro を使用すると、メンバーのプロフィールやディレクトリフィルターで使用されるチェックボックスの値が翻訳不可になる問題が発生する場合があります。これにより、翻訳されたディレクトリページやフォームで、翻訳されたラベルが正しく表示されなくなります。
回避策
続行する前に、サイトの完全なバックアップを取得していることを確認してください。
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 のような名前)に新しく登録された文字列のみを翻訳します。