分析错误:语法错误,While周围出现意外的‘}’

时间:2021-03-04 作者:Laura Sage

我只是很难弄清楚为什么我在\'quot;}上出错"E;“之后”$附件\\u image“;“前一行”"E;。我可能太累了,看不到它。

<?php if($term) {
   $args = array(
      \'post_type\' => \'attachment\',
      \'post_mime_type\' => \'image\',
      \'posts_per_page\' => 1,
      \'tax_query\' => array(
         array(
            \'taxonomy\' => \'mediacat\',
            \'terms\' => $term->term_id,
         )
      ),
      \'orderby\' => \'rand\',
      \'post_status\' => \'inherit\',
   );

   $loop = new WP_Query( $args );

   while ( $loop->have_posts() ) :

   $loop->the_post();

   $item = get_the_id();

   $attachment_image = wp_get_attachment_image_url( $item, \'square\' );
} ?>

<figure class="cblNavMenu--icon__imgwrap">
   <div class="navimage" style="background-image: url(\'<?php if($term) { echo $attachment_image; } if($menu_link){ the_permalink(); } ?>\');"></div>
</figure>

<?php if($term) {
   endwhile;
   wp_reset_postdata();
} ?>

</div>

<span class="cblNavMenu--label"><?php if($term) { if($cat_label) { echo $cat_label; } else { echo $current_term_name; } } if($menu_link){ if($cat_label) { echo $cat_label; } else { the_title(); } } ?></span>

2 个回复
SO网友:Jacob Peattie

您已经完成了while 在单独的if 声明。这是代码的结构。

if( $term ) {
    // etc.
   while ( $loop->have_posts() ) :
}

// etc.

if( $term ) {
   endwhile;
}
这是无效的PHP。您需要这样构造它:

if( $term ) {
    // etc.
   while ( $loop->have_posts() ) :

   // etc.

   endwhile;
}

SO网友:Patriot

UPDATE: 啊,还有一点。我没有看到endwhile 代码中的进一步说明。要修复代码,您必须删除} 从后一行开始$attachment_image = wp_get_attachment_image_url( $item, \'square\' ); 然后更换管路<?php if ($term) { 具有<?php. 这应该行得通。

旧帖子:

在生产线之后$attachment_image = wp_get_attachment_image_url( $item, \'square\' );, 放置一行内容如下endwhile;. 这应该可以解决您的问题,因为之前启动的while循环没有关闭。