Intereting Posts
Использование стандартных бэкэнд-элементов в плагине Как получить нефильтрованную выдержку без или автозапуска Отображать пользовательские типы сообщений в wp_list_pages Как получить атрибуты короткого кода из сообщения? Экспорт таблицы wordpress в Excel Как передать пароли пользователей с одного сайта WordPress на другой? Почему автор темы ставит свои CSS в одну длинную строку? WPMU – новые пользователи автоматически подписываются на главный блог – как это предотвратить? Есть ли способ получить раскрывающийся список часовых поясов? Как установить JavaScripts в плагин Функция для эхо (или отображения?) Тегов wordpress в разделе заголовка Как показать список иерархических терминов? posts_nav_link (); выбирает index.php вместо category.php в качестве шаблона Внедрение изоморфного JavaScript (React JS) в WordPress? Неверный запрос (неверное имя хоста) на рабочем сервере, проблема с базой данных

Добавить «последний» класс во второй пост в избранном цикле сообщений

Привет, я использую следующий запрос, чтобы вытащить два признанных сообщения на домашнюю страницу сайта, который я создаю. Как добавить последний класс во второй столбец, который он попадает на страницу?

<h3>Case Studies</h3> <?php $my_query = new WP_Query('post_type=casestudy&posts_per_page=2'); while ($my_query->have_posts()) : $my_query->the_post(); $do_not_duplicate = $post->ID; ?> <div class="half"> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a> <p class="home-news-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <?php the_excerpt(); ?> </div> <?php endwhile; ?> 

Спасибо, Джон

Есть несколько способов сделать это, включая приращение и проверку переменной счетчика. Я предпочитаю использовать встроенные членские вары, присутствующие в основном и каждом пользовательском WP_Query .

Это даст вам индекс текущего сообщения в цикле:

 $my_query->current_post 

Просто помните, что это нулевое индексирование, то есть первое сообщение – 0, второе – 1 и т. Д.

и это даст вам количество сообщений, возвращенных из вашего запроса:

 $my_query->post_count 

поэтому мы просто объединяем те, которые содержатся в инструкции if чтобы проверить, является ли это последним сообщением в цикле. Не забудьте добавить 1 к текущему сообщению здесь, потому что он начинается с нуля:

 while ($my_query->have_posts()) : $my_query->the_post(); $class = 'half'; if( ( $my_query->current_post + 1 ) == $my_query->post_count ){ $class .= ' last'; } echo '<div class="' . $class . '">'; // rest of your markup, etc.. endwhile; 

Проверьте $my_query->current_post и вы можете легко определить, в какой записи вы находитесь. Я использовал это для установки класса post, а затем использовал функцию post_class для вставки этого класса и всех значений по умолчанию.

 <h3>Case Studies</h3> <?php $my_query = new WP_Query('post_type=post&posts_per_page=2'); while ($my_query->have_posts()) : $my_query->the_post(); $do_not_duplicate = $post->ID; $new_class = (1 === $my_query->current_post) ? 'half' : '' ?> <div <?php post_class($new_class); ?>> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a> <p class="home-news-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <?php the_excerpt(); ?> </div> <?php endwhile; 

Обратите внимание, что *->current_post начинает индексирование с 0 так что 1 – это вторая запись.