Передача расширенных настраиваемых полей через цикл блога

Я надеюсь, что здесь мне кто-нибудь поможет. Я пытаюсь интегрировать ACF в тему, купленную клиентом.

Основная функциональность заключается в том, что я создал настраиваемое поле для каждого сообщения, чтобы выбрать, где разместить сообщение. Таким образом, если они выбирают «Вариант А» в сообщении, тогда код должен проверить, является ли этот параметр истинным, прежде чем передавать весь контент, связанный с сообщением (заголовок, контент, изображения и т. Д.)

Базовый пример кода того, как это будет работать в стандартном документе php, будет следующим:

<?php if (have_posts()): while (have_posts()) : the_post(); ?>
   <?php if(get_field('pick_your_theme') == "Theme1") { ?>

         <h2><?php the_title(); ?></h2>
         <p><?php the_excerpt(); ?></p>

   <?php } ?><?php endwhile; ?>
<?php endif; ?>

Проблема здесь в том, что автор темы создал страницу в одной гигантской открытой PHP-функции, а не разбил ее (как в примере кода 1 выше), куда я могу легко вставить селектор get_field.

Ниже приведена ссылка на PHP-код для страницы:

http://pastebin.com/wyWQiQvx


person tdorr07    schedule 27.01.2014    source источник
comment
Сообщение, которое вы помещаете в корзину, не сильно отличается от примера кода, за исключением того, что автор темы использует эхо, а не закрывает теги PHP.   -  person Chris Herbert    schedule 27.01.2014


Ответы (2)


Обычно вы уже должны иметь доступ к полям ACM внутри цикла, используя следующий код:

<?php the_field('NAME_OF_FIELD'); ?>

person Apostolos Kritikos    schedule 27.01.2014

Основываясь на комментарии @ChrisHerbert, вы должны просто скрыть там свое условие, поэтому раздел цикла вашего кода выглядит примерно так:

if ( have_posts() ){ while (have_posts()){ the_post();
            if(get_field('pick_your_theme') == "Theme1") {  
                                            if( $gdl_show_title != "No" ){
                                                    echo '<div class="sixteen columns mb0">';
                                                    echo '<div class="page-header-wrapper">';
                                                    echo '<h1 class="page-header-title title-color gdl-title">' . get_the_title() . '</h1>';
                                                    echo '<div class="header-gimmick mr0"></div>';
                                                    echo '<div class="clear"></div>';
                                                    echo '</div>'; 
                                                    echo '</div>'; // sixteen columns                                                              
                                            }

                                            if( $page_background != 'No' ){
                                                    echo "<div class='sixteen columns'>";
                                                    echo '<div class="page-bkp-frame-wrapper">';
                                                    echo '<div class="page-bkp-frame">';
                                            }      

                                            $content = get_the_content();
                                            // Show content
                                            if( $gdl_show_content != 'No' && !empty($content) ){
                                                    echo '<div class="sixteen columns">';
                                                    echo '<div class="gdl-page-content">';
                                                    echo '<div class="bkp-frame-wrapper">';
                                                    echo '<div class="bkp-frame p20">';                                                    
                                                    the_content();
                                                    echo '</div>';                         
                                                    echo '</div>';         
                                                    echo '</div>'; // page-content
                                                    echo '</div>'; // sixteen columns
                                            }

                             } //pick_your_theme conditional

                      } // while loop

         } //if have posts 

Очевидно, что вы можете настроить код в условном выражении «pick_your_theme» в соответствии с вашими потребностями и добавить } elseif(get_field('pick_your_theme') == "Some_Other_Theme") { или значение по умолчанию, когда «pick_your_theme» не установлен там } else { блок по мере необходимости.

person Nate F.    schedule 12.02.2014