0

I am facing error in the WordPress single page this page loading properly in another server when moved the website different server getting an error

Fatal error: Uncaught Error: syntax error, unexpected 'endwhile' (T_ENDWHILE)

in /single-product.php on line 149

Below the PHP code, if anyone can help me to resolve I will really very appreciate thanks in advance, I have already tried to resolve unable to resolve the issue my code is below

<?php
/**
 * The template for displaying all single product
 *
 * @package WordPress
 * @subpackage Duralift
 * @since Duralift 1.0
 */

get_header(); ?>

  <div id="primary" class="content-area">!!
    <div id="content" class="site-content" role="main">

      <section id="product-list" class="section">
      <div class="bandInner">
          <p><?php single_term_title( 'Currently browsing ' ); ?>.</p>

      <?php /* The loop */ 
      ?>
<?php 
$terms = get_the_terms( $post->ID, 'product_category');
foreach ( $terms as $term ) {
    $termname = $term->name;
}
echo "<h2 class='pageTitle'> $termname </h2>";
?>
<? 
wp_nav_menu( array( 
    'theme_location' => 'product-category',
    'container'      => 'ul',
    'menu_class'     => 'prodCats',
) );

?>
<style>
ul.prodCats li{
    display:initial!important;
}
ul.prodCats li.current-product-parent a {
    color: #8b2131!important;
}
</style>
      <?php
          $cats = get_the_terms($post->ID, 'product_category');
          $current_cat = "";
          $current_cat_slug= "";

          foreach($cats as $cat) {
            $current_cat = $cat->name;
            $current_cat_slug = $cat->slug;
            //echo "<h2 class='pageTitle'>" . $cat->name . "</h2>";
          }

          $terms = get_terms( 'product_category' );
    $args = array(
                'post_type'     => 'product',
                'product_category'  => $current_cat_slug,
              );
          $query = new WP_Query($args); ?>
<?php while ( have_posts() ) : the_post(); ?>

        <?php //get_template_part( 'content', get_post_format() ); ?>
        <?php //duralift_post_nav(); ?>
        <?php //comments_template(); ?>
<div class="product-cntnt">
        <div class="prodCtn">
          <div class="prodImgCtn">
            <?php
            $img = wp_get_attachment_image_src( get_field('product_image'), "thumb_product" );
            ?>
            <?php $image_alt = get_post_meta( $attributes['uni_card_image']['id'], '_wp_attachment_image_alt', true); ?>
            <img class="prodImg" src="<?php echo $img[0]; ?>" alt="<?php echo esc_attr( $img['title'] ); ?>"/>
          </div>
          <div class="prodCont product-half product-mid">
            <h1 class="prodHd"><?php the_title(); ?></h1>
            <div class="prodPara">
              <a href="<?php the_field('product_specs'); ?>" class="popupTrigger downloadLink">
                <img src="<?php echo get_template_directory_uri() . "/images/icons/pdf.gif"; ?>" />
                View product specs
              </a>
            </div>
            <?php if ( get_field( 'product_description' ) ) { ?>
            <div class="prodPara">

              <p><?php the_field('product_description'); ?></p>
            </div>
            <?php } ?>
            <?php if ( get_field( 'suitable_for' ) ) { ?>
            <div class="prodPara">
              <span class="themeColor1">Suitable for:</span>
              <p><?php the_field('suitable_for'); ?></p>
            </div>
            <?php } ?>
            <a class="callto" href="tel:1300 580 580"><span class="icon fa fa-phone"></span> 1300 580 580</a>
            <!--<a href="<?php echo get_bloginfo('url') . '?productID=' . get_the_ID() . '#quickquote' ?>" class="btn">-->
            <!--  <span class="btnTxt">Quick Quote</span>-->
            <!--</a>-->
          </div>
          <div class="product-half hidden-xs product-form">
              <h5>QUICK QUOTE</h5>
    <?php echo do_shortcode('[contact-form-7 id="3009" title="QUICK QUOTE NEW"]');?>
          </div></div>
<div class="pro-des">
  <div class="tabs">
<?php if(get_field('product_information')): $i = 0; ?>
 <?php while(has_sub_field('product_information')): $i++; ?>
  <input type="radio" name="tabs" id="section-<?php echo $i; ?>" checked="checked">
  <label for="section-<?php echo $i; ?>"><?php the_sub_field('title'); ?></label>
  <div class="tab <?php the_sub_field('title'); ?>" id="">
     <?php the_sub_field('content'); ?>
     </div>
      <?php endwhile; ?>
<?php endif; ?>
      <input type="radio" name="tabs" id="section-vid" checked="checked">
      <?php if(get_field('video-instructions')): 
      while(has_sub_field('video-instructions')):?>
  <label for="section-vid">Video & Instructions</label>
  <div class="tab">
       <div class="inner-tab">
           <?php if(get_sub_field('pdf_file')): ?>
<div class="pro-pdf-section">
    <div class="icon-pdf"><img src="https://wmiserver.com/dura/wp-content/uploads/2020/02/pdf-icon.png"/></div>
    <div class="file-pdf">
        <?php the_sub_field('pdf_title'); ?>
        <br>
<a href="<?php the_sub_field('pdf_file'); ?>" target="_blank">DOWNLOAD</a></div></div>
    <?endif?>
  <?php $Vidlink = get_sub_field('video'); ?>
  <?php if( $Vidlink ){ ?>
      <div class="pro-vid-section">

    <?
$link_url = $Vidlink;
$urlArr = explode("/", $Vidlink );
$urlArrNum = count($urlArr);

// Youtube video ID
$youtubeVideoId = $urlArr[$urlArrNum - 1];
// Generate youtube thumbnail url
$thumbURL = 'https://i.ytimg.com/vi/'.$youtubeVideoId.'/0.jpg';
 echo do_shortcode ('[wp-video-popup video="'.$Vidlink.'"]');
echo '  <a href="#" class="wp-video-popup img-respomsive"><img src="'.$thumbURL.'"/></a>';  
the_sub_field('video_title');         
?>
          </div>
      <?php}?>
     </div></div>
<?php endwhile; ?><?php endif; ?>
</div>
  </div>
  <div class="product-half visible-xs mobile-only product-form">
             <h5>QUICK QUOTE</h5>
    <?php echo do_shortcode('[contact-form-7 id="3009" title="QUICK QUOTE NEW"]');?>
          </div>

  </div>
<div class="single_related">
<div class="r-heading">
    <h4>DO YOU ALSO NEED</h4>
</div>
  <?  //Get array of terms
$terms = get_the_terms( $post->ID , 'product_tags', 'string');
//Pluck out the IDs to get an array of IDS
$term_ids = wp_list_pluck($terms,'term_id');

//Query posts with tax_query. Choose in 'IN' if want to query posts with any of the terms
//Chose 'AND' if you want to query for posts with all terms
  $second_query = new WP_Query( array(
      'post_type' => 'product',
      'posts_per_page' => 4,
      'ignore_sticky_posts' => 1,
      'orderby' => 'rand',
      'post__not_in'=>array($post->ID)
   ) );

//Loop through posts and display...
    if($second_query->have_posts()) {

     while ($second_query->have_posts() ) : $second_query->the_post(); ?>

          <div class="related-items">
           <div class="related-item-inner">
           <?php if (has_post_thumbnail()) { ?>
            <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"> <?php the_post_thumbnail( 'related_sm', array('alt' => get_the_title()) ); ?> </a>
            <?php } else { ?>
            <?php } ?><div class="r-img"><a class="prodImgCtn prodLink" href="<?php echo get_permalink(); ?>">
                    <?php 
                    $img = wp_get_attachment_image_src( get_field('product_image'), "thumb_product" ); 
                    ?>
                    <img class="prodImg" src="<?php echo $img[0]; ?>"/>
                  </a></div>
                  <div class="r-info">
                  <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
                  </div>
 </div></div>
   <?php endwhile; wp_reset_query();
   }  ?></div>
 <?php endwhile; ?></div>
        </section>
    </div><!-- #content -->

  </div><!-- #primary -->
  <style>
@media (max-width:768px){
   .product-half.hidden-xs {
    display: none;
} 
.mobile-only{
    margin-top:30px;
}
}
@media (min-width:768px){
   .product-half.visible-xs {
    display: none;
} 
}
.pro-vid-section img {
    width: 100%;
}
.Features ul {
    list-style: inherit;
    column-gap: 20px;
    width: 50%;
    float: left;
    padding: 0px 25px;
}
.pro-vid-section {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    grid-gap: 20px;
}
.icon-pdf {
    width: 20%;
    height: auto;
}
.icon-pdf img {
    width: 100%;
}
.pro-pdf-section {
    display: flex;
}
.inner-tab {
    display: grid;
    grid-template-columns: 30% 65%;
    grid-gap: 30px;
}
.inner-tab, .tabs label{
    text-transform: uppercase;
}
.inner-tab a{
    font-size:14px;
}
@media(max-width:768px){
    .inner-tab {
    grid-template-columns: 100%;
}
.pro-vid-section {
    grid-template-columns: 100%;
}
#Features ul{
    width:100%;
}
}

.pro-vid-section iframe {
    width: 100%;
    height: 186px;
}
.tabs {
  display: -webkit-box;
  display: flex;
  flex-wrap: wrap;
  width:100%;

}

.tabs label {
    -webkit-box-ordinal-group: 2;
    order: 1;
    display: block;
    padding: 1rem 16px;
    cursor: pointer;
    background: transparent;
    -webkit-transition: background ease 0.2s;
    transition: all ease 0.2s;
    font-size: 15px;
    font-weight: 600;
    top: 1px;
    position: relative;
}

.tabs .tab {
  -webkit-box-ordinal-group: 100;
          order: 99;
  -webkit-box-flex: 1;
          flex-grow: 1;
  width: 100%;
  display: none;
  padding: 1rem;
  background: #fff;
  border-top: 1px solid #cccccc;

}

.tabs input[type="radio"] {
  display: none;
}
.tabs input[type="radio"]:checked{
    transition: all ease 0.2s;
}
.tabs input[type="radio"]:checked + label {
    background: #fff;
    border-left: 1px solid #cccccc;
    border-top: 1px solid #cccccc;
    border-right: 1px solid #cccccc;
    top: 1px;
    position: relative;
    color: #8b2131;
     transition: all ease 0.2s;
}

.tabs input[type="radio"]:checked + label + .tab {
  display: block;
}

@media (max-width: 45em) {
  .tabs .tab,
  .tabs label {
    -webkit-box-ordinal-group: initial;
            order: initial;
  }

  .tabs label {
    width: 100%;
    margin-right: 0;
    margin-top: 0.2rem;
  }
.tabs input[type="radio"]:checked + label {
    background:#8b2131;
    color: #fff!important;
}
.tabs label {
    background:black ;
    color: #fff!important;
}
}
</style>
  <script>
    var elements = document.querySelectorAll('[name=tabs]:first-child');
Array.prototype.forEach.call(elements, function(el) { el.checked = true; });
</script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script>
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
(function($) {
  $.fn.uncheckableRadio = function() {
    var $root = this;
    $root.each(function() {
      var $radio = $(this);
      if ($radio.prop('checked')) {
        $radio.data('checked', true);
      } else {
        $radio.data('checked', false);
      }

      $radio.click(function() {
        var $this = $(this);
        if ($this.data('checked')) {
          $this.prop('checked', false);
          $this.data('checked', false);
          $this.trigger('change');
        } else {
          $this.data('checked', true);
          $this.closest('form').find('[name="' + $this.prop('name') + '"]').not($this).data('checked', false);
        }
      });
    });
    return $root;
  };
}(jQuery));

$('[type=radio]').uncheckableRadio();
}
        </script>
<style>
@media(max-width:560px){
.tabs input[type="radio"]:checked + label:after {
    content: "\f106";
    position: absolute;
    right: 10px;
    font-family: fontAwesome;
    font-size: 25px;
}
.tabs label:after {
    content: "\f107";
    position: absolute;
    right: 10px;
    font-family: fontAwesome;
    font-size: 25px;
}
.tabs input[type="radio"]:checked + label + .tab {
    overflow-x: scroll;
}    

}
.tabs input[type="radio"]:checked + label:after, .tabs label:after{
    transition: all 0.5s;
}
   .tabset > input[type="radio"] {
  position: absolute;
  left: -200vw;
}

.tabset .tab-panel {
  display: none;
}

.tabset > input:first-child:checked ~ .tab-panels > .tab-panel:first-child,
.tabset > input:nth-child(3):checked ~ .tab-panels > .tab-panel:nth-child(2),
.tabset > input:nth-child(5):checked ~ .tab-panels > .tab-panel:nth-child(3),
.tabset > input:nth-child(7):checked ~ .tab-panels > .tab-panel:nth-child(4),
.tabset > input:nth-child(9):checked ~ .tab-panels > .tab-panel:nth-child(5),
.tabset > input:nth-child(11):checked ~ .tab-panels > .tab-panel:nth-child(6) {
  display: block;
}
/*
 Styling
*/

.tabset > label {
  position: relative;
  display: inline-block;
  padding: 15px 15px 25px;
  border: 1px solid transparent;
  border-bottom: 0;
  cursor: pointer;
  font-weight: 600;
}

.tabset > label::after {
  content: "";
  position: absolute;
  left: 15px;
  bottom: 10px;
  width: 22px;
  height: 4px;
  background: #8d8d8d;
}

.tabset > label:hover,
.tabset > input:focus + label {
  color: #8b2131;
}

.tabset > label:hover::after,
.tabset > input:focus + label::after,
.tabset > input:checked + label::after {
  background: #8b2131;
}

.tabset > input:checked + label {
  border-color: #ccc;
  border-bottom: 1px solid #fff;
  margin-bottom: -1px;
}

.tab-panel {
  padding: 30px 0;
  border-top: 1px solid #ccc;
  font-size: 14px;
}

/*
 Demo purposes only
*/
*,
*:before,
*:after {
  box-sizing: border-box;
}


.tabset {
    max-width: 100%;
    margin: 10px;
}
.prodCtn{border:none;}
.product-cntnt {
    border: 1px solid #cccccc;
}
.product-mid{margin-bottom: 40px;}
.product-half {
    width: 50%;
    float: left;

}
a.callto {
    background: #99c66b;
    padding: 10px;
    text-align: center;
    margin: auto;
    display: table;
    margin-top: 30px;
    color: #fff;

}
a.callto span {
    color: #8b2131;
}
@media(max-width:1000px){
    .product-half {
    WIDTH: 100%;
}

}
@media(max-width:768px){
.tabset > input:checked + label {
    width: 100%;
}
.tabset > label {
    width: 100%;
}}
table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

td, th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #dddddd;
}
#infFormIframe_0 {
    height: 570px!important;
}
.wp-google-badge.wp-google-badge-fixed {
    display: none;
}
.related-item-inner {
    margin: 5px;
    border: 1px solid #dddddd;
    height: 250px;
    position: relative;
    overflow: hidden;
    border-bottom: 2px solid #8b2131;

}
.related-item-inner a {
    transition: all 0.5s;
    text-decoration: none;
}
.related-item-inner a:hover {
    color:black;
}
    .related-items {
    width: 25%;
    float: left;
}
.related-items img {
    width: 100%;
    height: 185px;
    object-fit: contain;
    margin:auto;
}
.related-items {
 text-align: center;
 transition: all 0.5s;
}
.r-info {
    background: #ffffff;
    margin: auto;
    align-items: center;
    position: absolute;
    bottom: 0;
    width: 100%;
    padding: 20px 4px;
    font-size: 15px;
    border-top: 1px solid #dddddd;
}
.related-items:hover .r-img {
    transform: scale(1.2);
}
.r-img {
    transition: all .5s;
}
.r-heading h4 {
    font-size: 20px;
    font-weight: 800!important;
}

.single_related{
margin-top: 40px;
display:inline-block;
}
@media(max-width:768px){
.related-items {
    width: 100%;
}}
</style>
<?php get_footer(); ?>
``````


1 Answer 1

0

You have few issues with your code:

  1. You haven't added php start code syntax properly at few places ( i.e. you should write <?php instead of <? ).
  2. You've to end endif loop with a Semicolon (;).
  3. You have to remove ```````` appearing at the end of the code.

By implementing these fixes, your existing errors will be fixed hopefully.

3
  • I have tried as per your guideline still not working @swshweta Commented May 25, 2020 at 7:35
  • Can you please help me with correct the codes, I have already tried Commented May 25, 2020 at 7:36
  • Can you try by cleaning your code a bit i.e. moving both css and js in respective folders and then placing code sections one by one to get your exact error?
    – swtshweta
    Commented May 26, 2020 at 0:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.