Intereting Posts
Сломанный админ – чистая установка Использовать готовый массив как категории в wp_query? Результаты поиска Страница выхода HTML-код Заменить каталог шаблонов шаблонов с дочерней темой? Захват имени шаблона страницы? Получить список сообщений, имеющих хотя бы один термин из пользовательской таксономии с WP_Query Использование постоянных ссылок, категорий slugs и тегов Фильтр для wp_embed_handler_youtube не работает Как таксономия родителя автоматически добавляется в сообщение при использовании `wp_set_object_terms ()`? Как создать тему страницы меню параметров для сохранения пользовательских значений получать данные из wp-запроса, вне цикла & без изменения URL-адреса Функция возврата короткого кода со ссылкой href внутри PHP Как получить форматированный контент сообщения с помощью WordPress API? Добавить javascript в wp_head с вызовом параметров плагина? wordpress / woocommerce login url не перенаправляет правильно

Попытка добавить класс для публикации ссылок

У меня есть запрос, охватывающий все сообщения в настраиваемом типе сообщений с использованием пользовательского порядка (через плагин переупорядочения).

Вот мой код:

<?php $current_id = get_the_ID(); $counter = 0; $the_query = new WP_Query(array( 'posts_per_page' => -1, 'post_type' => 'course_unit', 'orderby' => 'menu_order' )); ?> <h4>Your Course Units</h4> <ul> <?php if( $the_query->have_posts() ): while( $the_query->have_posts() ) : $the_query->the_post(); $post_id = get_the_ID(); ?> <li><a href="<?php the_permalink(); ?>" class="list-link<?php if($post_id == $current_id) : ?> current-unit<?php endif; ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; ?> </ul> <?php wp_reset_query(); ?> 

Этот вывод следующий:

 <h4>Your Course Units</h4> <ul> <li><a href="https://website.com/unit-1/" class="list-link">Unit 1</a></li> <li><a href="https://website.com/unit-2/" class="list-link">Unit 2t</a></li> <li><a href="https://website.com/unit-3/" class="list-link">Unit 3</a></li> <li><a href="https://website.com/unit-4/" class="list-link">Unit 4</a></li> <li><a href="https://website.com/unit-5/" class="list-link current-unit">Unit 5</a></li> <li><a href="https://website.com/unit-6/" class="list-link">Unit 6</a></li> <li><a href="https://website.com/unit-7/" class="list-link">Unit 7</a></li> <li><a href="https://website.com/unit-8/" class="list-link">Unit 8s</a></li> </ul> 

Как вы можете видеть, я привязал класс к текущему посту, чтобы ссылка текущего курса в списке могла иметь особый стиль. То, что я также хочу сделать, – это стили до и после текущего сообщения. Пользователь должен пройти через единицы один за другим, поэтому я хочу, чтобы предыдущие ссылки для ссылок были серыми (все, что мне нужно, это класс, и я могу его стилизовать).

Я попытался сделать это с помощью переменной счетчика (потому что я не могу сделать это с идентификаторами или датой, поскольку это настраиваемый заказ), но я не смог заставить его работать. Как я могу прикрепить класс ко всем сообщениям до текущего? Любая помощь была бы настолько оценена.

Немного PHP можно использовать для определения того, была ли текущая единица обработана или нет.

В приведенном ниже решении флаг $current_unit_rendered изначально установлен в значение false. Мы проверяем, находимся ли мы на текущем устройстве. Если это так, мы устанавливаем переменную $unit_class в соответствующую строку и обновляем флаг. Используя эту информацию, мы знаем, что мы до или после текущего блока:

 <?php $current_id = get_the_ID(); $current_unit_rendered = false; $unit_class = ''; $the_query = new WP_Query(array( 'posts_per_page' => -1, // Ideally, an upper limit like 500 should be used. 'post_type' => 'course_unit', 'orderby' => 'menu_order' ) ); ?> <h4>Your Course Units</h4> <ul> <?php if ( $the_query->have_posts() ): while ( $the_query->have_posts() ) : $the_query->the_post(); if ( get_the_ID() === $current_id ) { $unit_class = 'current-unit'; $current_unit_rendered = true; } elseif ( true === $current_unit_rendered ) { $unit_class = 'future-unit'; } elseif ( false === $current_unit_rendered ) { $unit_class = 'previous-unit'; } ?> <li><a href="<?php the_permalink(); ?>" class="list-link <?php echo esc_attr( $unit_class) ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; ?> </ul> <?php wp_reset_query(); ?> 

Установите переменную в имя класса перед циклом:

 $position = 'class-before'; 

Затем сбросьте его в if :

 if( $post_id == $current_id ) : ?> current-unit<?php $position = 'class-after'; endif;