Как отображать последние 3 сообщения (последние сообщения) на статической странице?

Я хотел бы реализовать что-то вроде «недавних сообщений» на статической странице:

http://themes.codehunk.me/insignio/ (внизу)

Как я смогу сделать это без виджета?

Обычно я использую такой подход:

неправильный подход

<?php query_posts( array( 'category_name' => 'news', 'posts_per_page' => 3, )); ?> <?php if( have_posts() ): while ( have_posts() ) : the_post(); ?> <?php the_excerpt(); ?> <?php endwhile; ?> <?php else : ?> <p><?php __('No News'); ?></p> <?php endif; ?> 

С помощью @swissspidy правильный путь :

 <?php // the query $the_query = new WP_Query( array( 'category_name' => 'news', 'posts_per_page' => 3, )); ?> <?php if ( $the_query->have_posts() ) : ?> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <?php the_title(); ?> <?php the_excerpt(); ?> <?php endwhile; ?> <?php wp_reset_postdata(); ?> <?php else : ?> <p><?php __('No News'); ?></p> <?php endif; ?> 

См. @codex для получения дополнительной информации.

Это зависит от того, что вы собираетесь делать. Если вы хотите сделать «страницу сообщений» – другие слова, создайте новый файл шаблона страницы – вы можете создать вторичный цикл на этой странице.

В кодексе есть пример этого и вот еще один, очень урезанный пример.

 <?php /* Template Name: Page of Posts */ get_header(); ?> <?php while( have_posts() ): the_post(); /* start main loop */ ?> <h1><?php the_title(); ?></h1> <?php /* Start Secondary Loop */ $other_posts = new WP_Query( /*maybe some args here? */ ); while( $others_posts->have_posts() ): $other_posts->the_post(); ?> You can do anything you would in the main loop here and it will apply to the secondary loop's posts <?php endwhile; /* end secondary loop */ wp_reset_postdata(); /* Restore the original queried page to the $post variable */ ?> <?php endwhile; /* End the main loop */ ?> 

Если вы ищете что-то, что вы можете зайти на любую страницу, лучшим решением будет короткий код . Вам нужно будет создать короткий код, который извлекает несколько сообщений и возвращает их в список (или все, что вы хотите). Пример:

 <?php add_action( 'init', 'wpse36453_register_shortcode' ); /** * Registers the shortcode with add_shortcode so WP knows about it. */ function wpse36453_register_shortcode() { add_shortcode( 'wpse36453_posts', 'wpse36453_shortcode_cb' ); } /** * The call back function for the shortcode. Returns our list of posts. */ function wpse36453_shortcode_cb( $args ) { // get the posts $posts = get_posts( array( 'numberposts' => 3 ) ); // No posts? run away! if( empty( $posts ) ) return ''; /** * Loop through each post, getting what we need and appending it to * the variable we'll send out */ $out = '<ul>'; foreach( $posts as $post ) { $out .= sprintf( '<li><a href="%s" title="%s">%s</a></li>', get_permalink( $post ), esc_attr( $post->post_title ), esc_html( $post->post_title ) ); } $out .= '</ul>'; return $out; } 

WordPress предоставляет функцию для такого запроса: query_posts () .

query_posts () – это самый простой способ изменить запрос по умолчанию, используемый WordPress для отображения сообщений. Используйте query_posts () для отображения разных сообщений, чем те, которые обычно отображаются на определенном URL-адресе.

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

query_posts ('posts_per_page = 5');

После выполнения запроса вы можете отображать сообщения так, как вы хотите.

В этом точном случае есть руководство для wordpress codex. Смотрите здесь : здесь я вставляю код, потому что он довольно короткий, для получения дополнительной информации перейдите на сайт wordpress.org.

 <?php $args = array( 'numberposts' => 10, 'order'=> 'ASC', 'orderby' => 'title' ); $postslist = get_posts( $args ); foreach ($postslist as $post) : setup_postdata($post); ?> <div> <?php the_date(); ?> <br /> <?php the_title(); ?> <?php the_excerpt(); ?> </div> <?php endforeach; ?>