Intereting Posts
Установите изображение с изображением при создании нового сообщения Как добавить переводную строку для публикации даты Как сделать мою кнопку «Главная» в меню перенаправлением на мою корневую страницу Cron Lock Timeout, когда использовать? отображение тегов в виджетах Как я могу сделать этот плагин переведенным? Получить постоянную ссылку на сообщение в сетевом блоге Создание шаблона страницы без No Footer Аргумент 'exclude' не работает с get_posts для настраиваемого типа сообщения отображать один пост из каждой настраиваемой категории (иначе говоря, «термин пользовательской таксономии») WP_Query Pagination Создание сеанса входа в систему через CURL get_pages () не заказывает, как следует Как я могу сделать имена пользователей комментарием кликабельными ссылками на профиль пользователя на экране комментариев администратора? Скрипт Enqueue js для нижнего колонтитула

Лучший способ создать первый пост по-другому?

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

Каков наилучший способ сделать это? Моя «проблема» заключается в том, что моя тема поддерживает разные типы сообщений, и стиль будет меняться в зависимости от типа содержимого, поэтому я хочу избежать как можно большего повторения кода (т. Е. Используя функцию).

Поскольку я немного больше привык к ООП, мой идеальный сценарий будет передавать переменную в представление и проверять ее в цикле каждого типа содержимого (таким образом, я могу повторно использовать большую часть кода из шаблонов TwentyEleven). Из того, что я знаю, это невозможно (пожалуйста, поправьте меня, если я ошибаюсь).

Пока что я делаю так:

function electric_index_loop($readMore = 0) { $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( //Excluimos los "miniposts" (citas, estados, enlaces...) del listado 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array('post-format-aside', 'post-format-link', 'post-format-status', 'post-format-quote'), 'operator' => 'NOT IN' ) ), 'posts_per_page' => 5, 'paged' => $paged ); // The Query query_posts($args); // The Loop if (have_posts()) { $post_count = 0; global $more; $more = $readMore; // 0 fuerza que se muestre sólo el "excerpt", 1 fuerza que se muestre todo el contenido twentyeleven_content_nav('nav-above'); while (have_posts()) { the_post(); if ($post_count == 0) { get_template_part('highlight', get_post_format()); } else { get_template_part('content', get_post_format()); } $post_count++; } } else { ?> <article id="post-0" class="post no-results not-found"> <header class="entry-header"> <h1 class="entry-title"><?php _e('Nothing Found', 'twentyeleven'); ?></h1> </header><!-- .entry-header --> <div class="entry-content"> <p><?php _e('Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyeleven'); ?></p> <?php get_search_form(); ?> </div><!-- .entry-content --> </article><!-- #post-0 --> <?php } wp_reset_query();} 

Как вы видите, я проверяю счетчик в цикле, который я создаю в этой функции, и, если текущий пост является первым, я загружаю другой шаблон («выделить»). Мне пришлось бы создавать разные шаблоны для разных типов контента (что в некоторых случаях отстойно, потому что я могу получить все, что мне нужно, в некоторых случаях только с классом CSS).

Ну, есть ли лучший способ сделать это? Может быть, крючок или что-то еще?

Заранее спасибо!

Я думаю, вы можете добавить класс к функции [post_class()][1] через Filter; имя, строка, вы можете использовать форму разных значений: теги или заголовок?

В следующем примере используйте заголовок сообщения и добавьте его в классы сообщений; если вы используете post_class() для тега post в разметке. Также вы можете использовать другие значения для этого.

 function fb_title_post_class( $classes ) { global $post; $classes[] = sanitize_title_with_dashes( get_the_title( $post->ID ) ); return $classes; } add_filter( 'post_class', 'fb_title_post_class' ); 

Хорошо, теперь лучшее решение, которое я нашел, это передать глобальную переменную в моих functions.php, так:

 while (have_posts()) { the_post(); if ($post_count == 0 || is_sticky()) { global $highlight; $highlight = true; }else{ $highlight = false; } get_template_part('content', get_post_format()); $post_count++; } 

И затем, я проверяю переменную в представлениях. Таким образом, мне не нужно создавать больше файлов:

 global $highlight; ?> <article id="post-<?php the_ID(); ?>" <?php $highlight == true ? post_class('highlight') : post_class(); ?>> (more code) 

Если кто-то думает, что есть лучшее решение, чем это, пожалуйста, дайте мне знать 🙂