#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. Но я думаю, что ты заставил меня начать! Я просто попробую это, а затем вернусь 🙂