【问题标题】:Get Brightcove Videos from repeating field in WordPress via ACF通过 ACF 从 WordPress 中的重复字段中获取 Brightcove 视频
【发布时间】:2015-12-16 04:22:51
【问题描述】:

我通过 ACF 重复字段在 WordPress 网站中有一个重复字段:

      <?php
      if( have_rows('recent_episodes') ):
        $i = 1;
          while ( have_rows('recent_episodes') ) : the_row();

        $image = get_sub_field('video_image');
      ?>

      <!--API CODE HERE-->

        <li class="recent-episode-<?php the_sub_field('brightcove_video_id'); ?> col-md-3 col-sm-4">
          <a href="#">
            <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>">
            <div class="flex-caption">
              <h6 class="date"><?php the_sub_field('air_date') ?></h6>
              <h5 class="title"></h5>
            </div>
          </a>
        </li>
      <?php
      $i++;
      endwhile; else :
      endif;
      ?>

brightcove_video_id 字段是 Brightcove 中视频的视频 ID。理想情况下,我想在重复字段中为每个视频提取相应的标题。但是,当我将 API 代码放在重复区域时,它每次只输出最后一项。这是我的 API 代码:

          var token = "HIDDEN";

          var req = "http://api.brightcove.com/services/library?"
          req += "command=find_video_by_id&token=" + encodeURIComponent(token);
          req += "&video_id=" + videoID;
          req += "&video_fields=id%2Cname%2CshortDescription%2CreferenceId&media_delivery=default//";
          req += "&callback=response";

          // Create a new request object
          bObj = new JSONscriptRequest(req);
          // Build the dynamic script tag
          bObj.buildScriptTag();
          // Add the script tag to the page
          bObj.addScriptTag();

        function response(jsonData) {
          jQuery('li.recent-episode-' + videoID ).find('h5').html(jsonData.name);
        }

我也尝试过使用 each 函数,但无济于事。我确定我只是在 Javascript 中遗漏了一些东西,但您可以使用一些帮助来解决它。

谢谢!

【问题讨论】:

    标签: javascript php wordpress advanced-custom-fields brightcove


    【解决方案1】:

    您的函数中videoID 的范围是全局的。每次迭代脚本时都会更新它的值。当回调被触发(异步)时,它会循环,videoID 具有您上次设置的最后一个值。

    由于从 API 返回的 JSON 包含 id,因此使用它是最简单的:

    function response(jsonData) {
      jQuery('li.recent-episode-' + jsonData.id ).find('h5').html(jsonData.name);
    }
    

    【讨论】:

    • 好主意。那效果很好。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多