Используя post_class для моделирования сообщений indivdually

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

Был бы я смочь достигнуть того, что я хочу использовать post_class?

0
05.05.2013, 18:43
3 ответа

Необходимо использовать post_classbody_class в этом отношении), но Вам не нужен он для этого. Измените свой Цикл на Вашей домашней странице для условного форматирования первого сообщения.

$first = (!is_paged()) ? true : false;
if (have_posts()) {
  while (have_posts()) {
    the_post();
    if ($first) {
      // code to format the first post
      $first = false;
    } else {
      // code to format all the other posts
    }
  }
}

Если все, в чем Вы нуждаетесь, является небольшим изменением, которое может быть сделано с помощью CSS затем, можно передать post_class параметр.

$first = (!is_paged()) ? 'is_first' : 'not_first';
if (have_posts()) {
  while (have_posts()) {
    the_post();
    echo '<div ',post_class($first),'>';
      // the rest of your Loop
    echo '</div>';
    $first = 'not_first';
  }
}
1
19.02.2020, 23:49
  • 1
    post_class() echos это возвращаемое значение. Вы могли использовать get_post_class() вместо этого, но это идет с HTML-тэгами class атрибут. –  kaiser 05.05.2013, 19:27
  • 2
    @kaiser: Протестируйте код. Обратите внимание, что это - запятая не период. Существует особенность с echo. При использовании запятой строки echoредактор сразу, не связанный, что означает что работы отлично. –  s_ha_dum 05.05.2013, 19:34
  • 3
    О, действительно? Даже не знал это. Спасибо за объяснение. –  kaiser 05.05.2013, 19:35
  • 4
    @s_ha_dum, который является точно, в чем я нуждался, Спасибо!. у меня есть индивидуальный проект, и я думаю его усовершенствование. где я могу получить больше материала справки в настройке моего расположения? –  Ammar 06.05.2013, 01:38

Это на самом деле очень просто: Используйте $wp_query свойство объекта current_post. Необходимо отметить, что это запускает индекс с 0, таким образом, я подсчитываю одним в примере ниже.

if ( have_posts() )
{
    while( have_posts() )
    {
        the_post();
        ?>
        <article <?php post_class( "post-nr-{$GLOBALS['wp_query']->current_post+1}" ); ?>>
            <?php
            the_title();
            the_content();
            ?>
        </article>
        <?php
    }
}
1
19.02.2020, 23:49

Я не использовал бы код php, чтобы сделать это. Это добавляет "хиты", которые не настолько необходимы. CSS мог бы быть более оптимальным вариантом для Вас, например.

.post:nth-child(1) { ... }

или

.post:first-of-type { ... }

и позвольте браузеру сделать тяжелый подъем моделирования его? Просто мысль.

0
19.02.2020, 23:49

Теги

Похожие вопросы