Как заказывать сообщения по измененной дате без использования «query_posts»?

У меня есть пример основного шаблона темы WordPress для вас. Во-первых, пожалуйста, взгляните на это быстро, чтобы получить представление.

<?php get_header(); ?> <div id="primary"> <div id="content" role="main"> <?php if ( have_posts() ) : ?> <?php /* Start the Loop */ ?> <?php while ( have_posts() ) : the_post(); ?> <?php /* Include the Post-Format-specific template for the content. * If you want to overload this in a child theme then include a file * called content-___.php (where ___ is the Post Format name) and that will be used instead. */ get_template_part( 'content', get_post_format() ); ?> <?php endwhile; ?> <?php reddle_content_nav( 'nav-below' ); ?> <?php else : ?> <article id="post-0" class="post no-results not-found"> <header class="entry-header"> <h1 class="entry-title"><?php _e( 'Nothing Found', 'reddle' ); ?></h1> </header><!-- .entry-header --> <div class="entry-content"> <p><?php _e( 'It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help.', 'reddle' ); ?></p> <?php get_search_form(); ?> </div><!-- .entry-content --> </article><!-- #post-0 --> <?php endif; ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?> 

Самый простой способ заказывать сообщения по последней измененной дате – это добавить следующее:

 <?php query_posts($query_string . '&orderby=modified&order=desc'); ?> 

Прямо над этим:

 <?php while ( have_posts() ) : the_post(); ?> 

Но этого я не хочу. Мне сказали, что гораздо лучше использовать get_posts() или WP_Query() ( см. ), Чем query_posts() . Я не знаю, как изменить приведенный выше код в соответствии с предложениями.

Если было бы очень полезно, если бы кто-то мог get_posts() указатель относительно того, как я должен использовать get_posts() или WP_Query() для основного шаблона выше. Благодарю.

Solutions Collecting From Web of "Как заказывать сообщения по измененной дате без использования «query_posts»?"

Вы не указали, к чему вы хотите применить это изменение, поэтому я применил его только к домашней странице. Вы можете изменить, чтобы соответствовать тому, где применяется этот фильтр:

 <?php function wpse10691_alter_query( $query ) { if ( $query->is_main_query() && ( $query->is_home() || $query->is_search() || $query->is_archive() ) ) { $query->set( 'orderby', 'modified' ); $query->set( 'order', 'desc' ); } } add_action( 'pre_get_posts', 'wpse10691_alter_query' ); ?> 

Поместите код в тему functions.php или пакет в плагин.