2016-07-17 2 views
0

Я работаю над коротким кодом, и я бы хотел настроить таргетинг на последнее «Событие». Ориентируясь на это последнее «событие», я бы хотел сделать две вещи.WordPress - Как настроить таргетинг на последнее сообщение и изменить его?

  1. Возможность применить к нему определенный класс, чтобы я мог стилизовать его по-разному (я не хочу использовать first-child).
  2. Добавить the_excerpt().

В настоящее время короткий код вытягивает последние 4 «События». Таким образом, самое последнее потребуется, о чем я упомянул выше. Я бы предположил, что это должно было бы что-то сделать с «счетом», но я не совсем уверен, все еще пытаясь изучить этот материал.

add_shortcode('show_events', 'events_query'); 

function events_query() { 
    $args = array(
     'posts_per_page' => 4, 
     'category_name' => 'events', 
    ); 
    $events_query = new WP_Query($args); 
    if ($events_query->have_posts()) : 
     $html_out = '<article>'; 
     while ($events_query->have_posts()) : 
      $events_query->the_post(); 
      // Do stuff with each post here 
      $html_out .= '<div class="events-item"><div class="meta-date">' . Date('F j, Y') . '</div><div class="meta-info"><div class="meta-title"><h4><a href="' . get_permalink() . '">' . get_the_title() . '</a></h4></div>/div></div>'; 
     endwhile; 
     $html_out .= '</article>'; 
    else : // No results 
     $html_out = 'No Events Found.'; 
    endif; 
    wp_reset_query(); 
    return $html_out; 
} 

EDIT

Обновлено с помощью кода из ответа:

add_shortcode('show_events', 'events_query'); 

function events_query() { 
    $args = array(
     'posts_per_page' => 4, 
     'category_name' => 'events', 
    ); 
    $events_query = new WP_Query($args); 
    if ($events_query->have_posts()) : 
     $html_out = '<article>'; 
     $counter = 0; 
     $event_class = 'events-item'; 
     while ($events_query->have_posts()) : 
      if ($counter == 0) { 
       $event_class = 'events-item most-recent'; 
      } 
      $events_query->the_post(); 
      // Do stuff with each post here 
      $html_out .= '<div class="' . $event_class . '"><div class="meta-date">' . Date('F j, Y') . '</div><div class="meta-info"><div class="meta-title"><h5><a href="' . get_permalink() . '">' . get_the_title() . '</a></h5></div></div>'; 

      if ($counter == 0) { 
       $html_out .= '<div class="meta-info">' . get_the_excerpt() . '</div>'; 
      } 
      $html_out .= '</div>'; 
      $counter++; 
     endwhile; 
     $html_out .= '</article>'; 
    else : // No results 
     $html_out = 'No Events Found.'; 
    endif; 
    wp_reset_query(); 
    return $html_out; 
} 

ответ

1

Эй Даррен это снова я :) Вы можете использовать дополнительные вар $counter, чтобы проверить, если это первый пост Вот код

add_shortcode('show_events', 'events_query'); 

function events_query() { 
    $args = array(
     'posts_per_page' => 4, 
     'category_name' => 'events', 
    ); 
    $events_query = new WP_Query($args); 
    if ($events_query->have_posts()) : 
     $html_out = '<article>'; 
     $counter = 0; 

     while ($events_query->have_posts()) : 
      $event_class = 'events-item'; 
      if ($counter == 0) { 
       $event_class = 'events-item first-event, additiona-classes'; 
      } 
      $events_query->the_post(); 
      // Do stuff with each post here 
      $html_out .= '<div class="' . $event_class . '"><div class="meta-date">' . Date('F j, Y') . '</div><div class="meta-info"><div class="meta-title"><h4><a href="' . get_permalink() . '">' . get_the_title() . '</a></h4></div>/div>'; 

      if ($counter == 0) { 
       $html_out .= '<div class="meta-info">' . $post->post_excerpt . '</div>'; 
      } 
      $html_out .= '</div>'; 
      $counter++; 
     endwhile; 
     $html_out .= '</article>'; 
    else : // No results 
     $html_out = 'No Events Found.'; 
    endif; 
    wp_reset_query(); 
    return $html_out; 
} 
+0

Ты жизнь заставка. Я чувствую, что это близко, хотя. Я получаю «неопределенную переменную» в '$ post-> post_excerpt'. Это то же самое, что 'the_excerpt()'? –

+0

Хмм, я думаю, что отрывок из сообщения пуст. Можно ли проверить, есть ли в выписке пост в поле выдержки? Пожалуйста, обратитесь к следующему [link] (http://www.mhthemes.com/support/custom-excerpts-wordpress/). –

+0

Станимир, я обновил свой ОП. Я заменил '$ post-> post_excerpt' на' get_the_excerpt() ', и я больше не получал никаких ошибок. Единственная проблема - все мои сообщения получают 'class =" most-recent', когда он должен быть только первым. Вот демонстрация [link] (http://www.ankitdesigns.com/demo/rawafid/). –

0

Здравствуйте Уважаемый использовать пожалуйста, если codition

add_shortcode('show_events', 'events_query'); 

function events_query() { 
    $args = array(
     'posts_per_page' => 4, 
     'category_name' => 'events', 
    ); 
    $events_query = new WP_Query($args); 
    if ($events_query->have_posts()) : 
     $html_out = '<article>'; 
     $i=1; 
     while ($events_query->have_posts()) : 
      $events_query->the_post(); 
      if($i==1){ 
      $class = "new_class"; 
      $excerpt = the_excerpt(); 
      } 
      $html_out .= '<div class="events-item'.$class."><div class="meta-date">' . Date('F j, Y') . '</div><div class="meta-info"><div class="meta-title"><h4><a href="' . get_permalink() . '">' . get_the_title() . '</a></h4> 
      <p>'.$excerpt.'</p></div></div></div>'; 
      $i++; 
     endwhile; 
     $html_out .= '</article>'; 
    else : // No results 
     $html_out = 'No Events Found.'; 
    endif; 
    wp_reset_query(); 
    return $html_out; 
} 
Смежные вопросы