есть ли лучший способ объединить это?

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

Я работаю на своем веб-сайте и хочу отобразить в общей сложности 5 сообщений из категории «Общие недоумения».

Первое сообщение имеет разные стили с другого 4. Пожалуйста, см. Код ниже,

Теперь, 2 проблемы … они так, как я написал, это означает, что есть дубликат сообщения, а во-вторых – наверняка есть лучший способ объединить это в одно, а не то, как я его написал?

Любая помощь будет принята с благодарностью.

спасибо

<div class="columns"> <?php $args = array( 'category_name' => 'General Wonderings', 'posts_per_page' => 1 ); $lastposts = get_posts( $args ); foreach($lastposts as $post) : setup_postdata($post); ?> <article> <h3><a href="<?php the_permalink(); ?>"> <?php the_title(); ?> </a></h3> <h4> <?php the_date(); ?> </h4> <p> <?php the_excerpt(); ?> </p> <p><a href="<?php the_permalink(); ?>">Read more</a></p> </article> <?php endforeach; ?> </div> <div class="columns"> <?php $args = array( 'category_name' => 'General Wonderings', 'posts_per_page' => 4 ); $lastposts = get_posts( $args ); foreach($lastposts as $post) : setup_postdata($post); ?> <article> <h4><a href="<?php the_permalink(); ?>"> <?php the_title(); ?> <br/> <span><?php echo substr($post->post_excerpt, 0,30); ?>...<br/> <?php the_date(); ?> </span></a></h4> </article> <?php endforeach; ?> </div> 

Solutions Collecting From Web of "есть ли лучший способ объединить это?"

Используйте offset=1 чтобы исключить первое сообщение.

 $args = array( 'category_name' => 'General Wonderings', 'posts_per_page' => 4, 'offset' => 1 ); 

Я бы больше беспокоился о производительности, чем сжатый код, хотя немного сократил его. Сейчас вы выполняете два запроса. Это не обязательно, и это самая большая проблема с этим кодом, на мой взгляд.

 $args = array( 'category_name' => 'General Wonderings', 'posts_per_page' => 5 ); $lastposts = get_posts( $args ); $first = true; ?> <div class="columns"><?php foreach($lastposts as $post) { setup_postdata($post); ?> <article><?php if ($first) { ?> <h3><a href="<?php the_permalink(); ?>"> <?php the_title(); ?> </a></h3> <h4> <?php the_date(); ?> </h4> <p> <?php the_excerpt(); ?> </p> <p><a href="<?php the_permalink(); ?>">Read more</a></p> </div><div class="columns"><?php // close the first div and open the second $first = false; } else { ?> <h4><a href="<?php the_permalink(); ?>"> <?php the_title(); ?> <br/> <span><?php echo substr($post->post_excerpt, 0,30); ?>...<br/> <?php the_date(); ?> </span></a> </h4><?php } ?> </article><?php } ?> </div> 

Надеюсь, я сохранил форматирование и не имею никаких синтаксических ошибок 🙂