Массив расширенных настраиваемых полей WP, если ошибка оператора

Я использую это, чтобы получить условное значение в Wordpress с расширенными настраиваемыми полями:

    <?php if( in_array( 'Branding', get_field('services_provided') ) ) {
    echo '<div class="branding"><div class="text"><h2>Branding</h2>' . get_field('services_text_branding') . '</div>';
    if( have_rows('branding_images_repeater') ):                                 
        while ( have_rows('branding_images_repeater') ) : the_row();
        ?>
            <?php if (get_sub_field('branding_images')): ?>
            <img src="<?php echo the_sub_field('branding_images'); ?>" alt="" />
            <?php endif; ?>
        <?php endwhile; else : endif; } ?>
     <?php echo '</div> <!--end branding -->;' ?>

Однако я получаю эту ошибку: Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданная '(' в /nas/wp/www/cluster-3024/omniaagency/wp-content/themes/omniaagency/page-case-study-single.php на строка 29, реферер: http://www.mydomainname.com/

И я не уверен, что я делаю неправильно.

Кто-нибудь знает, как я могу это исправить?


person theomniaagency    schedule 08.11.2014    source источник


Ответы (2)


Я отформатировал ваш код и переписал часть синтаксиса; у вас есть куча php-тегов, которые не нужны. Кроме того, у вас есть точка с запятой в вашем последнем операторе внутри строки, которая не нужна:

if(in_array('Branding', get_field('services_provided'))){
    echo '<div class="branding"><div class="text"><h2>Branding</h2>' . get_field('services_text_branding') . '</div>';
    if(have_rows('branding_images_repeater')):
    while(have_rows('branding_images_repeater')) : the_row();
        if(get_sub_field('branding_images')):
        ?>
        <img src="<?php echo the_sub_field('branding_images'); ?>" alt="" />
        <?php
        endif;
    endwhile;
    else : endif;
}
echo '</div> <!--end branding -->';

Так что попробуйте, я думаю, это принесет вам пользу.

person visigoth    schedule 08.11.2014
comment
Я бы почистил это, иначе : endif; несколько бессмысленно, на самом деле весь внешний if не нужен, потому что while () ожидает от функции true, а если он ложный, цикл пропускается, поэтому я бы выбросил весь внешний if. - person ArtisticPhoenix; 08.11.2014
comment
Спасибо за предложение. Теперь я получаю это в своих журналах ошибок: [Сб, 08 ноября, 02:15:52 2014] [ошибка] [клиент 72.192.63.54] Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданный '}' в /nas/wp/www/cluster -3024/omniaagency/wp-content/themes/omniaagency/page-case-study-single.php в строке 37, реферер: omniaagency.wpengine.com - person theomniaagency; 08.11.2014

Спасибо, jaunveliz! Вы помогли мне разобраться. У вас была последняя скобка в неправильном месте. Размещение отредактированного кода ниже.

if(in_array('Branding', get_field('services_provided'))){
echo '<div class="branding"><div class="text"><h2>Branding</h2>' . get_field('services_text_branding') . '</div>';
if(have_rows('branding_images_repeater')):
while(have_rows('branding_images_repeater')) : the_row();
    if(get_sub_field('branding_images')):
    ?>
    <img src="<?php echo the_sub_field('branding_images'); ?>" alt="" />
    <?php
    endif;
endwhile;
else : endif;

echo '</div> <!--end branding -->'};
person theomniaagency    schedule 09.11.2014