最近,小编在用wordpress开发企业展示站的时候,遇到一个问题,就是所有的产品列表跳转到产品详情页的时候,商品图片,名称信息显示的是同一个产品的信息。看到这个问题首先进行分析,先分析了展示产品信息的foreach函数,在其他地方进行了调用测试,没有任何的问题。让后在后台路径设置了各种固定链接测试页面,问题仍然存在。在分析页面框架结构哪里不完整,之后把页面组成的三大部分头部,尾部和中间产品信息,分别注释单独测试。经过一系列测试发现当吧头部引用文件注释掉之后,详情页的产品信息就不在是同一个产品的了。思路虽然写着简单,但是这个bug的分析却仍然是花了小编一天的时间。以下是部分代码:

<div class="dropdown-menu mega-dropdown-menu">
    <ul class="row mega-menu-featured-categories">

        <?php $posts2 = get_posts("category=8&numberposts=5&offset=0&orderby=modified" );$query_index = 0; ?>
        <?php if( $posts2 )  :?>
            <?php foreach( $posts2 as $post ) : setup_postdata( $post ); ?>
                <li class="col-md-15 col-sm-15">
                    <a href="<?php the_permalink() ?>">
                        <img src="<?php echo site_url() ?>" alt="<?php the_title() ?>" class="img-fluid">
                        <span><?php the_title() ?></span>
                    </a>
                </li>
                <?php $query_index++;?>
            <?php endforeach; ?>
        <?php endif; ?>

    </ul>
    <a href="<?php echo site_url()?>/category/beauty-equipment/hair-removal-machine/" class="btn btn-more-categories">All Medical Supplies</a>
</div> 

以上是小编使用的foreach循环代码,经过测试,此代码没有任何的问题,此代码位于头部的菜单中。而在此代码的下面,展示产品信息使用的代码如下:
<div class="product-header--media">
                        <h1><?php the_title() ?></h1>
                        <div class="product-header--media--row">
                            <div class="product-header--media--full">
                                <div class="gallery-photo-box">
                                    <img id="bigImg" src="<?php the_field('text_img')  ?>"  alt="<?php the_title()?>" class="img-fluid img-product-itemphoto">
                                </div>
                            </div>
                            <div class="product-header--media--thumbs">
                                <div class="gallery-box-thumbs">
                                    <ul class="thumbs" id="gallery_photo_thumbs">
                                        <li  class="img-fluid">
                                            <a href="#" data-toggle="modal" data-target="#media_library">
                                            <img alt="" src="<?php the_field('thumb1')  ?>">
                                              
                                            </a>
                                        </li>
                                        <li  class="img-fluid">
                                         <img alt="GE Aisys Carestation " src="<?php the_field('thumb2')  ?>">
                                          
                                        </li>
                                        <li  class="img-fluid">
                                     <img alt="GE Aisys Carestation Anesthesia Machine" src="<?php the_field('thumb3')  ?>">
                                           
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
之所以出现错误,是因为在上面的foreach循环中,没有清除(结束)循环。小编的理解是,详情信息的id继承的是产品列表的id,在产品裂变使用的foreach循环,
没有添加结束标签,如果在这里添加上结束标签的话,产品详情信息将不会显示。大家可以试下。而我的错误是因为在详情页中使用了两个循环,产生了两个id,
一个来自头部菜单的foreach循环,一个来自产品详情页的foreach循环。根据信息流从上往下执行的特点,每次执行的都是头部菜单中foreach循环的id进行详情
输出,所以会出现标题中所说的错误。
说了这么多,解决错误问题的最终办法:就是结束(清除)header菜单中foreach循环的id。当小编在头部foreach循环中添加上清除代码
<?php wp_reset_query() ?>
时:这个问题便迎刃而解。
     以上便是小编遇到这个错误所有的思考总结,希望能够帮助到看这篇文档的你。也是一次技术突破的记录。愿你我越来越好!!!