0

我有一个显示帖子列表的 WP_Query。然而,相当标准,在其中我调用了多个函数实例,如 the_title(); 用于弹出模式,该模式应该显示被点击的帖子,但只是再次显示循环中的第一个。

<?php
   $members = new WP_Query( 'post_type=member' );
   if ( $members->have_posts() ) :
   while ( $members->have_posts() ) : $members->the_post();

   // get the src of the post thumbnail
   $src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full', false, '' ); 
   $thumbnailSrc = $src[0];  
   ?>

        <div class="col-sm-3 member">
          <img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php echo $thumbnailSrc; ?>&h=250&w=250&zc=1q=100" alt="" data-toggle="modal" data-target="#memberModal">
          <h4><?php the_title(); ?></h4>
          <p><?php the_field('member_title'); ?></p>
        </div>
        <div class="modal fade" id="memberModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
              </div>
              <div class="modal-body">
                <img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php echo $thumbnailSrc; ?>&h=300&w=650&zc=1q=100" alt="" class="img-responsive">
                <h2><?php the_title(); ?></h2>
                <p><?php the_field('member_title'); ?></p>
                <p class="lead"><?php the_field('member_introduction'); ?></p>
                <?php the_field('member_description'); ?>
              </div>
            </div><!-- /.modal-content -->
          </div><!-- /.modal-dialog -->
        </div><!-- /.modal -->

        <?php endwhile; else:
          echo '<p>Sorry, there are no posts to display</p>';
          endif;
        ?>

在上面的示例中,为每个帖子创建了一个 div.member。但随后 div.modal 仅显示第一篇文章。

在某种程度上,我正在尝试为每个帖子创建其中一个(div.member + div.modal)。

更新:

这是一个视觉表示。循环在 post_type 中吐出四个“成员”,每个成员都有数据。

http://img42.com/k2Cdx

但无论我点击哪一个,模态都只是从第一篇文章中获取数据。

http://img42.com/Pjq9P

4

2 回答 2

1

您的循环正在创建多个具有相同类和 ID 的模式。当你点击链接显示 modal 时,JS 只会获取 DOM 中的第一项。我建议您创建一个循环计数器来增加您的 ID。

在 while 循环开始之前 ->

<?php $count = 0; ?>

就在while循环内->

<?php $count++; ?>

然后为您的 ID ->

<div class="modal fade" id="memberModal<?php echo $count; ?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">

这将增加您可以使用 jQuery 定位的 ID。如果您希望它正常运行,您将不得不计算条目数,然后在 jQuery 中循环,或者您可以本地化脚本并将变量输出到您的 JS。

于 2014-03-03T11:57:56.757 回答
0

the_title() 应该需要任何类型的参数来识别当前的迭代帖子。您既没有指定 post_id,也没有指定 post 对象或 the_title() 可以使用的任何全局值。

例如,您可以像在get_post_thumbnail_id($post->ID)中一样传递参数$post-> ID

我能问你一件事吗?你在哪里设置$post var?我想您想在while循环中执行此操作,但我看不到它在哪里完成

也许你需要类似的东西

$post = $members->the_post();

在你的while循环第一行......

于 2014-02-24T16:54:33.637 回答