2016-04-26 8 views
-1

私はmediaelement.jsオーディオプレーヤーを持っており、高度なカスタムフィールドプラグインを使用しています。プレーヤーの現在のトラックのタイトルを表示できるようにしたいのですが、ここに私のコード Wordpress Advanced Custom Fieldsループのリピーター表示タイトルの外サイト

編集

<audio class="mejs-new" style="width: 100%; height: auto;" controls width="100%" height="auto"> 

    <?php if(get_field('audio_repeater')): ?> 

     <?php while(has_sub_field('audio_repeater')): ?> 

      <?php $title = get_sub_field('music_title'); ?> 
      <source src="<?php the_sub_field('music_url'); ?>" title="<?php echo $title; ?>" type="audio/mp3"> 
      <p><?php echo $title; ?></p> 
     <?php endwhile; ?> 

     <?php endif; ?> 
</audio> 
...

は、私は、オーディオタグ外のタイトルをエコー試してみましたが、それだけECHです2番目の曲のタイトルは変更され、トラックを変更すると変更されません。

+0

特に動作しないのは何ですか? –

+0

オーディオプレーヤーのタイトルを表示する方法がわかりません。ループの外に$タイトルをエコーし​​ようとしましたが、うまくいきません。 – Frank

+0

私は理解していると思います。あなたはかなり近いです、私の答えを見てください。 –

答えて

0

私が正しく理解していれば、<audio />タグの外にタイトルを移動したいのですが、ループ内からタイトルを取得することしかできません。

実際にはほとんどありません。これを行う最も簡単な方法は、既にループしている間に変数にタイトルを設定することです($title = get_sub_field('music_title');)。これで、必要なときに変数をエコーするだけです。

ループ内の関数にアクセスしている間に既に変数を設定しているので、ループを必要とせずにその変数を後でエコーすることができます。

<?php endif; ?> 
</audio> 

<p><?php echo $title; ?></p> 

EDIT

私はあなたが唯一のタイトルを持っていたし、あなたが一つのタイトルでリピータを使用していた理由は、私は問題ではありませんでした:)プリントアウトすると想定例えば

その後のタイトルのリストでも、ループの結果を保存してからループを繰り返す必要がある場合を除いて、同様のアプローチを使用できます。

最も簡単な方法これは、ループコード全体を繰り返しますが、タイトルを印刷するだけですが、それはやや効率が悪いことです。理想的には、フィールドを1回だけ取得する必要があります。ここで全部行うための別の方法です。この例では

<?php $audio_repeater = get_field("audio_repeater"); ?> 

<audio class="mejs-new" style="width: 100%; height: auto;" controls width="100%" height="auto"> 

    <?php if((array) count($audio_repeater)): ?> 

     <?php foreach($audio_repeater as $audio_source): ?> 

      <source src="<?php echo $audio_source["music_url"]; ?>" title="<?php echo $audio_source["music_title"]; ?>" type="audio/mp3"> 

     <?php endforeach; ?> 

     <?php endif; ?> 
</audio> 

<?php foreach($audio_repeater as $audio_source): ?> 
    <p><?php echo $audio_source["music_title"]; ?></p> 
<?php endforeach; ?> 

は、我々はトップ全体を一度ACFリピーターをつかんで、そしてそれを変数に代入しています。次に、その中にアイテムがあることを確認し、それらのアイテムをループします。

これは、ACFリピータを使用する別の方法です。これは、ループ機能を使用するほど簡単ではないかもしれませんが、ちょっとしたことを動かすときにはより拡張性があります。

+0

私はこれを試してみましたが、プレイリストをクリックすると2番目のトラックのタイトルだけがエコーされ、最初のものではありません。 – Frank

+0

ああ、持っています。あなたはそれに言及しなかった。あなたの質問で何を試しているかを常にご記入ください。私は私の答えを更新します。 –

+0

私はそれを自分の投稿に追加しました。 – Frank

関連する問題