Как при выводе записей, к первой записи добавить класс в Wordpress?

Рейтинг: 0Ответов: 2Опубликовано: 15.04.2023

Вывожу все записи, они отлично выводятся, но нужно, чтобы отдельно при выводе записей, первой записи добавился класс active. Не могу реализовать, помогите пожалуйста решить. Как перебрать массив так, чтобы это реализовать?

<ul class="tabs-skills-nav-block-menu">
   <?php
   global $post;
   $myposts = get_posts([ 
   'numberposts' => -1,
   'category'    => 2,
   'orderby' => 'post__in',
   ]);
   if( $myposts ){
     foreach( $myposts as $post) {
     setup_postdata( $post );
   ?>
     <li data-tab="#tab_<?php echo get_the_ID(); ?>" class="tabs-skills-nav-block-menu__item tab-one-btn"><?php the_title(); ?></li>
   <?php 
     }
   }

   wp_reset_postdata(); // Сбрасываем $post
   ?>
</ul>

Ответы

▲ 1

Используйте $index в foreach.

<ul class="tabs-skills-nav-block-menu">
    <?php
    global $post;

    $myposts = get_posts(
        [
            'numberposts' => - 1,
            'category'    => 2,
            'orderby'     => 'post__in',
        ]
    );

    if ( $myposts ) {
        foreach ( $myposts as $index => $post ) {
            $active = 0 === $index ? 'active' : '';

            setup_postdata( $post );
            ?>
            <li
                data-tab="#tab_<?php echo get_the_ID(); ?>"
                class="<?php echo esc_attr( $active ); ?> tabs-skills-nav-block-menu__item tab-one-btn">
                <?php the_title(); ?>
            </li>
            <?php
        }
    }

    wp_reset_postdata(); // Сбрасываем $post
    ?>
</ul>
▲ 0
...
$fPost = current($myposts);
foreach ($myposts as $post) {
    if ($post == $fPost) $active = ' active';
    else $active = '';
    setup_postdata($post);
?>
<li data-tab="#tab_<?php echo get_the_ID(); ?>"
    class="tabs-skills-nav-block-menu__item tab-one-btn<?php echo $active;?>"><?php the_title();?></li>
<?php 
}
...