最近,小编在用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() ?>
时:这个问题便迎刃而解。 以上便是小编遇到这个错误所有的思考总结,希望能够帮助到看这篇文档的你。也是一次技术突破的记录。愿你我越来越好!!!