在Bootstrap 4模式下显示WP图像帖子

时间:2019-05-11 作者:inputforcolor

我在一个使用Bootstrap 4的WP站点的页面上显示了一系列的图片帖子\\u开发站点的链接也是在线的here

单击时,图像通常会显示较大的大小,但我希望以下拉模式显示它们。问题是,当我实现该模式时,它只显示页面上的最后一篇文章,而不是单击的图像\\u

我意识到这是因为我需要获取帖子ID并将相同的ID添加到模式代码中。然而,我尝试了几种方法,但都没有成功

这是我当前在页面>>>

<?php get_header(); ?>

        <div class="container fadeIn" id="perimeter">

            <section class="gallery" id="mainGallery">
                <div class="container">
                    <div class="row">
                        <?php $featured_query = new WP_Query( array(
                            \'category_name\' => \'canvas\'
                        )); ?>

                        <?php while($featured_query->have_posts()) : 
                            $featured_query->the_post(); ?>
                                <div class="col-md-6">
                                    <div class="divPad">
                                        <a data-toggle="modal" data-target="#galleryModal" href="<?php echo the_permalink(); ?>">
                                            <?php the_post_thumbnail(); ?>
                                            <?php $post_id = get_the_ID(); ?>    
                                        </a>
                                        <br />
                                        <span class="fontBrand1 fontType1 text"><?php echo the_title(); ?></span>
                                        <span class="fontBrand2 fontOpenSans smallText"><?php echo get_post_meta($post->ID, \'Materials\', true); ?><?php echo get_post_meta($post->ID, \'Dimensions\', true); ?><?php echo get_post_meta($post->ID, \'Price\', true); ?></span>
                                    </div><!-- /.divPad -->
                                </div>
                        <?php endwhile; ?>

                    </div><!-- /.row -->
                </div><!-- /.container -->
            </section><!-- /#mainGallery -->

            <div class="horizBuffer2"></div>
        </div><!-- /#perimeter -->

        <!-- modal -->
        <div class="modal fade" id="galleryModal" tabindex="-1" role="dialog" aria-labelledby="galleryModalLabel" aria-hidden="true">
            <div class="modal-dialog modal-lg" role="document">
                <div class="modal-content">

                    <div class="modal-header">
                        <h5 class="modal-title" id="galleryModalLabel">Modal title</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>

                    <div class="modal-body">
                        <?php the_post_thumbnail(); ?>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                    </div>
                </div><!-- /.modal-content -->
            </div>
        </div><!-- /#galleryModal -->

<?php get_footer(); ?>
如有任何帮助,将不胜感激\\u谢谢

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

我意识到这是因为我需要获取帖子ID并将相同的ID添加到模式代码中

不,你的情况不是这样的。如果要对所有不同的图像使用单个模式(&M);i、 e.根据触发模式的按钮/链接(或简单地说,单击的按钮/链接),模式中会显示不同的图像,您需要JavaScript来实现这一点,正如Bootstrap 4\'s Modal documentation &mdash;毕竟,modal本身就是一个JavaScript插件:

不同的模式内容是否有一组按钮,这些按钮都会触发内容略有不同的相同模式?使用event.relatedTarget 和HTMLdata-* 属性(可能通过jQuery)根据单击的按钮改变模式的内容。

所以根据这个例子there 以及您的代码:

Option 1: 您只需使用此脚本将模态内容替换为触发模态的按钮/链接的内部HTML:

jQuery( function( $ ){
    $( \'#galleryModal\' ).on( \'show.bs.modal\', function ( event ) {
        var button = $( event.relatedTarget ); // Button/link that triggered the modal
        var modal = $( this );

        // Update the modal\'s content.
        modal.find(\'.modal-body\').html(
            button.html()
        );
    });
});
Option 2: 或使用data-* 属性进行更多控制,例如显示帖子缩略图的更大预览。在这里我使用data-imagelarge 缩略图大小:

添加data-image: (为清晰起见,包装好)

<a data-toggle="modal" data-target="#galleryModal" href="<?php echo the_permalink(); ?>"
  data-image="<?php the_post_thumbnail_url( \'large\' ); ?>">
查看reference 如果您需要帮助the_post_thumbnail_url().

添加脚本:(注意新的image 变量)

jQuery( function( $ ){
    $( \'#galleryModal\' ).on( \'show.bs.modal\', function ( event ) {
        var button = $( event.relatedTarget ); // Button/link that triggered the modal
        var image = button.data( \'image\' );    // Get the image URL from the data-image
                                               // attribute of the button/link above.
        var modal = $( this );

        // Update the modal\'s content.
        modal.find(\'.modal-body\').html(
            \'<img src="\' + image + \'" alt="" />\'
        );
    });
});
注意,应将脚本放置在外部JavaScript文件中(例如wp-content/themes/your-theme/custom.js) 并通过主题的functions.php 文件或者将脚本代码包装为<script></script> 标记,然后将脚本添加到footer.phpheader.php 文件(检查this article 如果你需要帮助。您也可以在WPSE上搜索。:)

modal-body DIV你不需要the_post_thumbnail().. 或者您可以将其更改为Loading... 或显示“特殊”图像/内容,其用途类似于视频海报图像。但是,这只是一个建议

相关推荐

如何创建4列和2列Twitter-Bootstrap相结合的WordPress循环?

我想根据4列(桌面视图)、2列(mobile view 768px)和1列(mobile view 425px)的组合显示帖子。我在下面找到了很棒的代码:<?php $paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1; $args=array( \'post_type\' => \'post\',