Мне нужна помощь с приведенным ниже альтернативным синтаксисом if-else. Я использую это очень часто, и он работает с вероятностью успеха 99,999999%. Здесь почему-то нет:
if ( get_row_layout() == 'spacer' ) :
$spaceheight = get_sub_field('spacer_height');
// The Alternative Syntax: if... else statement without a colon
// Once these two lines are removed OR changed into "if ( some
// condition ) : some stuff; endif;" syntax >> the error goes
// away.
if ( $spaceheight && ( 0 !== $spaceheight ) )
echo "<div class='basf-spacer' style='display: block; width: 100%; height: {$spaceheight}px; background: transparent; padding: 0; margin: 0; font-size: 0; line-height: 0;'></div>";
elseif ( get_row_layout() == 'terms' ) :
// Some other stuff
endif;
Конкретное сообщение об ошибке: «Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное «:» в...»; и двоеточие неожиданно после альтернативного синтаксиса в строке elseif ( get_row_layout() == 'terms' ) :
.
Есть идеи, что здесь происходит?
@antoni предложил ответ, что альтернативные синтаксисы нельзя смешивать. Но в этом случае, почему это работает?:
if ( $terms_primcont || $terms_seccont ) : ?>
<div class="terms__body-wrap">
<?php
if ( $terms_primcont ) echo "<div class='terms__primary'>{$terms_primcont}</div>";
if ( $terms_seccont ) echo "<div class='terms__secondary'>{$terms_seccont}</div>";
?>
</div>
<?php endif;