WPML
ステータス
開発者からの返答待ち
トピックタグ
Compatibility

問題の概要

WPMLとLayerSliderを併用している場合、スライダーのコンテンツ自体が翻訳されていても、Layer Settings > Linkで追加されたリンクがフロントエンドで翻訳されない問題が発生することがあります。

回避策

回避策1 – コードなし(推奨)

この回避策は内部リンクにのみ有効です。
  • 「Layer Settings > Link > Layer Linking」に移動します
  • 「Choose Post or Page」をクリックし、正しい投稿またはページを選択します
  • スライダーを保存します
  • これでWPMLがリンクを自動的に翻訳できるようになります

回避策2 – コードの変更

続行する前に、必ずサイトの完全なバックアップを取得してください。 1. 翻訳用にレイヤーURL文字列を登録する
  • …/wp-content/themes/enfold/config-layerslider/LayerSlider/assets/wp/actions.phpファイルを開きます。
  • 886行目を探します。
  • 次を置き換えます:
    foreach($data['layers'] as $slideIndex => $slide) {
            
  • 次のコードに置き換えます:
    foreach($data['layers'] as $slideIndex => $slide) {
    
        foreach ( $slide['sublayers'] as $index => $sublayer ) {
            if ( ! empty( $sublayer['url'] ) ) {
                $string_name = "slider-{$sliderID}-sublayer_link-{$sublayer['url']}";
                do_action( 'wpml_register_single_string', 'LayerSlider Sliders', $string_name, $sublayer['url'] );
            }
        }
            
2. フロントエンドで翻訳されたURLをレンダリングする
  • …/wp-content/themes/enfold/config-layerslider/LayerSlider/assets/includes/slider_markup_html.phpファイルを開きます。
  • 702行目を探します。
  • 次を置き換えます:
    if( ! empty( $layer['props']['url'] ) ) {
            
  • 次のコードに置き換えます:
    if( ! empty( $layer['props']['url'] ) ) {
    
      $layer['props']['url'] = apply_filters( 'wpml_translate_single_string', $layer['props']['url'], 'LayerSlider Sliders', "slider-{$id}-sublayer_link-{$layer['props']['url']}");
            
3. スライダーを再保存する
  • 元のスライダーを編集します
  • スライダーを再度保存または公開します
4. 登録されたURL文字列を翻訳する
  • WPML > 文字列翻訳に移動します
  • LayerSlider Slidersドメインでフィルターします
  • 登録されたURL文字列を翻訳します

すべての既知の問題 →