2017-01-26 2 views
0

Я создаю сайт для кулинарной школы, и мне нужна помощь в написании цикла. Цикл отобразит типы классов, которые они предоставляют, если каждый из этих типов классов имеет предстоящие события. Любая помощь будет действительно оценена, поскольку все, что я пробовал до сих пор, не удалось.Написание цикла для условного отображения пользовательского типа сообщения, проверка полей ACF и событий Event Calendar Pro

Я использую плагин Advanced Custom Fields, а также плагин Calendar Calendar Pro от Modern Tribe. Я буду ссылаться на тип сообщения, созданный плагином Calendar Calendar Pro, как «события» с этого момента.

У меня есть пользовательский тип сообщения, называемый «class-type», который я установил в моем файле functions.php. Каждый пост этого типа является типом класса, который предлагает школа кулинарии, например, DIY Pizza Club, Street Food Mastercless и т. Д. В одном представлении сообщения будут отображаться изображения и детали этого класса с циклом предстоящих событий этой категории, с категориями, являющимися именем класса.

Тип типа «тип класса» имеет поле ACF, называемое «class_age», которое представляет собой меню выбора с параметрами «Для взрослых» или «Для детей» & Подростки ». Он также имеет поле ACF, называемое «class_to_display», которое является полем таксономии, показывающим категории из сообщений Tribe Events.

Школа кулинарии имеет два места, и каждое событие имеет свое местоположение, установленное на одном из них.

Петля, в которой мне нужна помощь, будет иметь 4 варианта на четырех разных страницах, и как только у меня будет работа цикла, я смогу самостоятельно выполнить эти варианты. Изменения будут:

  • Бристоля, Для взрослых
  • Бристоля, для детей & Подростков
  • Кардифф, Для взрослых
  • Кардиффа, для детей & Подростков

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

  1. Получить сообщения типа «класс-тип».
  2. Для каждого сообщения проверьте, чтобы поле ACF сообщения было поле «для взрослых».
  3. Получите значение в поле ACF сообщения 'class_to_display' и сохраните его в переменной.
  4. Проверьте наличие сообщений типа «события» с этой переменной в качестве категории и с «Бристоль» в качестве их местоположения.
  5. Если существуют события, соответствующие этим критериям, отобразите поля ACF типа «class-type» класса «class_main_image», «class_title» и «class_short_description».

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

Вот то, что я до сих пор, который идет вверх к шагу 3, и проверена и работает (эхо в р тегов просто проверить, работает):

<?php 
$args = array(
    'post_type'  => 'class-type', 
    'meta_key'  => 'class_age', 
    'meta_value' => 'For Adults' 
); 

$the_query = new WP_Query($args); 

if($the_query->have_posts()): 

    while ($the_query->have_posts()) : $the_query->the_post(); 

     $cookery_class = get_field('class_to_display'); ?> 

     <p><?php echo $cookery_class->name; ?></p> 

    <?php endwhile; 

endif; 

wp_reset_query(); ?> 
+0

Хорошо структурированный вопрос. Вы что-то пробовали? –

+0

Я отредактирую вопрос, добавив, что у меня есть до сих пор. –

ответ

0

К моему удивлению, я Успешно справился! Вот код, который работает, надеюсь, что это поможет кому-то.

<?php 
$args = array(
    'post_type'  => 'class-type', 
    'meta_key'  => 'class_age', 
    'meta_value' => 'For Adults' 
); 

$the_query = new WP_Query($args); 

if($the_query->have_posts()): 

    while ($the_query->have_posts()) : $the_query->the_post(); 

     $cookery_class  = get_field('class_to_display'); 
     $cookery_class  = (str_replace(' ', '-', strtolower($cookery_class->name))); 
     $check_has_events = tribe_get_events(array(
       'tribe_events_cat' => $cookery_class, 
       'venue'    => 59 
      ) 
     ); 

     if($check_has_events) { 

      $image = get_field('class_main_image'); ?> 

      <div class="cookery-class"> 

       <?php if(!empty($image)): ?> 

        <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" /> 

       <?php endif; ?> 

       <h3><?php the_title(); ?></h3> 

       <p><?php the_field('class_short_description'); ?></p> 

      </div> 

     <?php } 

    endwhile; 

endif; 

wp_reset_query(); ?> 
Смежные вопросы