在循环中获取不同帖子的帖子元

时间:2013-10-01 19:14:42

标签: php wordpress vimeo

我有一个名为“视频”的自定义帖子类型,在该自定义帖子类型中,我有一个元数据,用户可以在其中粘贴vimeo链接。我正在尝试查询视频自定义帖子类型的元数据,但下面的代码为每个帖子返回相同的元数据(vimeo链接),即使它们在仪表板中不同。我希望每个帖子在循环中拥有自己的vimeo链接。谢谢您的帮助!如果我需要更明确的话,请告诉我。

$args = array( 'post_type' => 'video', 'posts_per_page' => 10,);

$the_query = new WP_Query( $args );

echo '<section id="our-work">';

echo '<div class="row-fluid">';

$i = 1;

if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();

     global $post;
     $vimeo = get_post_meta( $post->ID, '_cmb_test_embed', true );

     $counter += 1;

     if($counter == 4 || $counter == 5 || $counter == 9 || $counter == 10) : 

     echo '<div class="span6">';

     the_post_thumbnail();

     echo '</div>';

     else:

     $thumb = wp_get_attachment_image_src(get_post_thumbnail_id(), 'thumbnail_name');
     $vimeo_id = (int) substr(parse_url($vimeo, PHP_URL_PATH), 1); ?>

     <div class="span4">
     <div class="myModalThumbnail"><img src="<?php echo $thumb[0]; ?>"/></div>
     </div>

     <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
     <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
     </div>
     <div class="modal-body">
       <iframe src="//player.vimeo.com/video/<?php echo $vimeo_id; ?>?title=0&amp;byline=0&amp;portrait=0&amp;color=cc6f1a" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
     </div>
     </div>

     <?php  endif; 

    // if multiple of 3 close div and open a new div
     if($i == 3 || $i == 5 || $i == 8 || $i == 10) {echo '</div><div class="row-fluid">';}

$i++; endwhile; endif;

echo '</div>';

echo '</section>';

// Reset Post Data
wp_reset_postdata();

?>

更新 -

我弄清楚是什么导致了这个问题。这是模态的jQuery。模态显示每个帖子的第一个帖子链接。请参见示例fiddle。点击“虚拟图像”,你会看到我的意思。如何动态分配选择器,以便每个帖子图像显示相应的vimeo链接?

1 个答案:

答案 0 :(得分:2)

使用get_the_ID()

  

检索当前帖子的数字ID。此标记必须在   The Loop

$vimeo = get_post_meta(  get_the_ID() , '_cmb_test_embed', true );

编辑尝试在循环启动时初始化为空,如

if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
$vimeo_id ="";
$vimeo="";

编辑 Checkout this fiddle

你已经为多个元素分配了id="myModal"但是html标准中的id属性一旦被分配就不会对其他元素使用相同的id而是你可以使用class属性我在html中进行了一些更改也可以在你的javascript中看到你如何动态管理帖子的模态弹出窗口

 jQuery(document).ready(function($) {
     $('.myModalThumbnail').click(function () {
      var modalclass=  $(this).attr('id');
       $("."+modalclass).modal('show');

    });
});


 <div class="span4">
 <div class="myModalThumbnail" id="post-<?php echo get_the_ID();?>"><img src="<?php echo $thumb[0]; ?>"/></div>
 </div>

 <div  class="modal hide fade post-<?php echo get_the_ID();?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
 <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
 </div>
 <div class="modal-body">
   <iframe src="//player.vimeo.com/video/<?php echo $vimeo_id; ?>?title=0&amp;byline=0&amp;portrait=0&amp;color=cc6f1a" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 </div>
 </div>