Я использую цикл на боковой панели своего сайта, чтобы показать все сообщения в этой категории. Теперь я хотел бы включить класс current_post в текущую запись, которая отображается для стилизации этого элемента в списке.
Я пробовал искать условные теги или эту пользовательскую функцию wp_list_post_types, но обе они не работали. Кто-нибудь знает, есть ли способ сделать это?
РЕДАКТИРОВАТЬ: добавление цикла из комментария ниже
<?php foreach((get_the_category()) as $category) {
$postcat= $category->cat_ID;
$catname =$category->cat_name; }
$args = array( 'cat' => $postcat );
$my_query = new WP_Query();
$my_query->query($args); // Equivalent of query_posts()
while($my_query->have_posts()) : $my_query->the_post();
$id=get_the_ID();
$currentClass= ($post->ID == $id) ? "current_post": ""; ?>
<a class="<?php echo $currentClass; ?>" href="<?php the_permalink();?>">ni</a>
<?php endwhile; ?>
Вы должны иметь возможность получить идентификатор запрошенного объекта и использовать его для сравнения внутри вашего пользовательского цикла.
Перед вашим существующим кодом цикла (то, что вы разместили выше), но, очевидно, после открывающего тега PHP.
Затем где-то внутри ваших пользовательских циклов WP..
Надеюсь, это поможет..
Да, это сработало!
Блестяще — мне помогло! Потрясающие вещи! @t31os
Отличное решение; Спасибо!
Спасибо за ответ! К сожалению, похоже, это не работает… :S Вот цикл, который я использую:
<?php foreach((get_the_category()) as $category) { $postcat= $category->cat_ID; $catname =$category->cat_name; } $args = array( 'cat' => $postcat ); $my_query = new WP_Query(); $my_query->query($args); // Equivalent of query_posts() while ($my_query->have_posts()) : $my_query->the_post(); $id=get_the_ID(); $currentClass= ($post->ID == $id) ? "current_post": ""; ?> <a class="<?php echo $currentClass; ?>" href="<?php the_permalink(); ?>">ni</a> <?php endwhile; ?>
Извините за плохое форматирование кода, просто осваиваю мини-уценку! 🙂
@squrler, обычно лучше всего редактировать исходный вопрос с помощью кода. Это обеспечивает лучшее форматирование. Я сделал это для тебя. Однако сначала его необходимо утвердить.
Если вы используете цикл, вы сможете сделать что-то подобное, это не проверено, но должно работать. Цикл для боковой панели
потом
<div class="post <?php echo $currentClass; ?>">.....
Это не проверено, поэтому я просто предполагаю, что
$post->ID
получит идентификатор сообщения снаружи иget_the_ID()
получит идентификатор сообщения внутри цикла. Если это не сработает, не могли бы вы опубликовать свой код цикла, и я проведу тестРЕДАКТИРОВАТЬ
Есть несколько проблем с вашей петлей. Во-первых, он захватывает только последнюю категорию. Я сделал быстрый поиск в Google и нашел решение, которое, похоже, работает на моей тестовой установке здесь.
Это будет отображаться только в том случае, если они находятся на странице с одним сообщением. В противном случае случаются плохие вещи (показ дубликатов сообщений IE и т. д.)