Если еще с изюминкой — возможно

#php #wordpress #if-statement

#php #wordpress #if-оператор

Вопрос:

Могу ли я создать оператор If Else, который завершает div перед выполнением «else»? Я хочу циклически просматривать свои сообщения и помещать сообщения из «specialCat» в один div.

 <div id="the-div-i-want-to-close">  

<?php if (in_category('specialCat')) { ?> 

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

<?php }  else { ?>

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

<?php } ?>
  

Большое спасибо 🙂

Ответ №1:

Лучше всего изменить запрос, вызывающий вашу специальную категорию, а затем завершить цикл с остальными сообщениями.

  <?php
    $args = array(
    'category_name' => 'special-cat', // Use Category slug
    'posts_per_page' => -1 // Get all the post in SpecialCat
    );
    $special_query = new WP_Query( $args );
    ?>
    <div id="the-div-i-want-to-close"> 
    <?php
    while ( $special_query->have_posts() ) : $special_query->the_post();
    $no_repeat[] = $post->ID ?>
    <h1><?php the_title(); ?></h1>
    <?php endwhile; ?>
    </div> <?php // Close your special div after looping through all SpecialCat posts

// Start the loop again 

    if (have_posts() ) : while (have_posts() ) : the_post();
    if (in_array( $post->ID, $no_repeat ) ) continue;  // Exclude the posts we already got above ?>
    <h1><?php the_title(); ?></h1>
    <?php endwhile; endif; ?>
  

Комментарии:

1. Спасибо! Работает как шарм! Понятия не имел, что вы можете перезапустить ‘цикл’.

Ответ №2:

Вы можете включать HTML в цикл for для каждого цикла, при условии, что вы закрываете теги PHP (или включаете HTML в оператор echo).

Ответ №3:

Это сделало бы это для вас?

 <div id="the-div-i-want-to-close">  
<?php $isOpen = true; ?>
<?php if (in_category('specialCat')) { ?> 
    <?php the_title(); ?>
<?php }  else { ?>
    <?php if($isOpen) { ?>
    </div>
    <?php $isOpen = false; ?>
    <?php } ?>
    <?php the_title(); ?>
<?php } ?>
  

Комментарии:

1. я бы сделал, если бы у меня был только один другой пост. Но когда у меня больше одного, он закрывает div каждый раз, когда отображает сообщение, которого нет в ‘specialCat’. Мне нужно что-то вроде «if (do this) beforeElse (закрыть div) else (сделать это)»

2. Я обновил ответ, чтобы отразить ваш комментарий (добавил переменную с именем $ isOpen, чтобы указать, нужно ли нам закрывать div). Возникает вопрос — что произойдет, если у вас есть несколько сообщений, которые находятся в категории specialCat? В этом случае вы можете захотеть обрабатывать открытие и закрытие вашего div внутри блока if…

3. у меня есть несколько сообщений в обоих cats. Но я думаю, что ты заставил меня начать! Я просто попробую это, а затем вернусь 🙂