wordpress主题意外的elseif

时间:2016-08-17 13:10:29

标签: wordpress

您在使用不断变化的语言在wordpress中执行一些代码,但是如果在其他地方处理问题,有人可以帮助我吗?

        <?php 
            if(ICL_LANGUAGE_CODE=='en'): 
            $loop = new WP_Query( array( 
                'post_type' => 'shapes_en', 
                'posts_per_page' => -1,
                'orderby' => 'menu_order',
                'order' => 'asc',
                ) 
            );
            if ($loop):
            while ( $loop->have_posts() ) : $loop->the_post(); 
            elseif(ICL_LANGUAGE_CODE=='he'):
            $loop = new WP_Query( array( 
                'post_type' => 'shape', 
                'posts_per_page' => -1,
                'orderby' => 'menu_order',
                'order' => 'asc',
                ) 
            );
            if ($loop):
            while ( $loop->have_posts() ) : $loop->the_post();  
            endif;
            ?>
            <li>
                <a href="<?php the_permalink()?>"><?php the_post_thumbnail('idustry-thumbnail'); ?></a>
                <h3><a href="<?php the_permalink()?>"><?php the_title()?></a></h3>
            </li>
            <?php endwhile; 
            endif;?>

1 个答案:

答案 0 :(得分:0)

while:语法需要endwhile;,否则无法知道while块停止的位置。由于缺少endwhile;语句,PHP认为elseif;仍在while循环中,因此elseif;是意外的。

The docs

  

在每种情况下,替代语法的基本形式是将左大括号更改为冒号(:)并将右大括号更改为 endif; endwhile; endfor; endforeach; endswitch;

将您的代码更改为:

if ($loop):
    while ($loop->have_posts()):
        $loop->the_post();
    endwhile;
elseif (ICL_LANGUAGE_CODE == 'he'):
...

我不知道在编写模板时是否需要使用替代语法,但除非您正在编写模板,否则我建议使用带有卷曲括号的常规语法,因为它通常更容易读取。

if ($loop) {
    while ($loop->have_posts()) {
        $loop->the_post();
    }
}
elseif (ICL_LANGUAGE_CODE == 'he') {
...