Intereting Posts
meta_query сравнение даты и времени Включите боковую панель на статической первой странице двадцать тринадцатого Сохранить значение настраиваемого поля Metabox Создание настраиваемого поля в admin post.php только для чтения wp_get_attachment_image_src () каждый раз регенерировать изображения нестандартного размера Автоматическая категория для пользовательского типа сообщения URL-адрес Rewrite, когда WordPress находится в подкаталоге Как переопределить функцию ядра is_ssl ()? Скрыть определенные родительские категории из сообщения Создание сообщения из данных, возвращаемых из формы HTML Проблемы с пользовательским таксономическим фильтром Добавить категории к пользовательскому сообщению Мой блог показывает странные персонажи! WordPress Multisite: иметь одинаковый заголовок и нижний колонтитул основного блога во всех суб-блогах Почему есть /index.php/ во всех моих ссылках? Как его удалить?

Откорректируйте заказ для возвращенных сообщений

Я написал аккуратный отзывчивый слайдер для моих опубликованных статей WordPress (не стесняйтесь использовать его):

<?php $responsive = 'on' != get_option('henrik_responsive_layout') ? false : true; $featured_auto_class = ''; if ( 'on' == get_option('henrik_slider_auto') ) $featured_auto_class .= ' et_slider_auto et_slider_speed_' . get_option('henrik_slider_autospeed'); ?> <div id="featured" class="<?php if ( $responsive ) echo 'flexslider' . $featured_auto_class; else echo 'et_cycle'; ?>"> <a id="left-arrow" href="#"><?php esc_html_e('Previous','henrik'); ?></a> <a id="right-arrow" href="#"><?php esc_html_e('Next','henrik'); ?></a> <?php if ( $responsive ) { ?> <ul class="slides"> <?php } else { ?> <div id="slides"> <?php } ?> <?php global $ids; $ids = array(); $arr = array(); $i=0; $featured_cat = get_option('henrik_feat_cat'); $featured_num = (int) get_option('henrik_featured_num'); if (get_option('henrik_use_pages') == 'false') query_posts("showposts=$featured_num&cat=".get_cat_ID($featured_cat)); else { global $pages_number; if (get_option('henrik_feat_pages') <> '') $featured_num = count(get_option('henrik_feat_pages')); else $featured_num = $pages_number; query_posts(array ('post_type' => 'page', 'orderby' => 'menu_order', 'order' => 'ASC', 'post__in' => (array) get_option('henrik_feat_pages'), 'showposts' => (int) $featured_num )); } ?> <?php if (have_posts()) : while (have_posts()) : the_post(); global $post; ?> <?php if ( $responsive ) { ?> <li class="slide"> <?php } else { ?> <div class="slide"> <?php } ?> <?php $width = $responsive ? 960 : 958; $height = 340; $small_width = 95; $small_height = 54; $titletext = get_the_title(); $thumbnail = get_thumbnail($width,$height,'',$titletext,$titletext,false,'Featured'); $arr[$i]['thumbnail'] = get_thumbnail($small_width,$small_height,'',$titletext,$titletext,false,'Small'); $arr[$i]['titletext'] = $titletext; $thumb = $thumbnail["thumb"]; print_thumbnail($thumb, $thumbnail["use_timthumb"], $titletext, $width, $height, ''); ?> <div class="featured-top-shadow"></div> <div class="featured-bottom-shadow"></div> <div class="featured-description"> <div class="feat_desc"> <p class="meta-info"><?php esc_html_e('Posted','henrik'); ?> <?php esc_html_e('by','henrik'); ?> <?php the_author_posts_link(); ?> <?php esc_html_e('on','henrik'); ?> <?php the_time(esc_attr(get_option('henrik_date_format'))) ?></p> <h2 class="featured-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <p><?php truncate_post(410); ?></p> </div> <a href="<?php the_permalink(); ?>" class="readmore"><?php esc_html_e('Read More', 'henrik'); ?></a> </div> <!-- end .description --> <?php if ( $responsive ) { ?> </li> <!-- end .slide --> <?php } else { ?> </div> <!-- end .slide --> <?php } ?> <?php $ids[] = $post->ID; $i++; endwhile; endif; wp_reset_query(); ?> <?php if ( $responsive ) { ?> </ul> <!-- end .slides --> <?php } else { ?> </div> <!-- end #slides --> <?php } ?> </div> <!-- end #featured --> <div id="controllers" class="clearfix"> <ul> <?php for ($i = 0; $i < $featured_num; $i++) { ?> <li> <div class="controller"> <a href="#"<?php if ( $i == 0 ) echo ' class="active"'; ?>> <?php print_thumbnail( $arr[$i]['thumbnail']['thumb'], $arr[$i]['thumbnail']["use_timthumb"], $arr[$i]['titletext'], $small_width, $small_height ); ?> <span class="overlay"></span> </a> </div> </li> <?php } ?> </ul> <div id="active_item"></div> </div> <!-- end #controllers --> 

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

Итак, можно ли выбрать, какой заказ отображают возвращенные сообщения? Может быть, ориентируясь на конкретные идентификаторы?

В идеале я хотел бы установить собственный идентификатор (непосредственно в коде) для первого сообщения, а затем отобразить оставшийся дисплей в возвращаемом порядке, как есть. Это возможно?

Если вы решите ответить, пожалуйста, детализируйте пример кода, спасибо за чтение.

Solutions Collecting From Web of "Откорректируйте заказ для возвращенных сообщений"

Чтобы выполнить то, что вы хотите, вам нужно будет заблаговременно получать сообщения. Невозможно указать в SQL произвольный порядок, заданный идентификационным списком.

query_posts () создает другой основной запрос, выкидывая основной запрос. Поскольку вы все равно это делаете, вы можете использовать get_posts (), чтобы вместо этого возвращать список сообщений.

 $posts = get_posts( array( 'post_type' => 'page', 'orderby' => 'menu_order', 'order' => 'ASC', 'post__in' => (array) get_option('henrik_feat_pages'), 'showposts' => (int) $featured_num ) ); 

Затем,

 $posts_by_id = array(); foreach( $posts as $post ) $posts_by_id[$post->ID] = $post; 

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

 global $post; foreach( (array) get_option( 'henrik_feat_pages' ) as $post_id ) { $post = $posts_by_id[$post_id]; setup_postdata( $post ) // ... Template code as if you were in the loop. } 

Обновить

Цикл выше заменяет основной цикл. Поэтому вместо написания

 <?php if (have_posts()) : while (have_posts()) : the_post(); <?php /** Code in loop **/ ?> <?php endwhile; endif; ?> 

Чтобы начать цикл, мы используем:

 global $post; foreach( (array) get_option( 'henrik_feat_pages' ) as $post_id ) { $post = $posts_by_id[$post_id]; setup_postdata( $post ); /** Code in loop **/ } 

Это эквивалентный код, который использует несколько иной синтаксис. $ post должен быть глобализирован и установлен на правильный пост-объект на каждой итерации, а setup_postdata() заполняет все связанные setup_postdata() с информацией, найденной в $ post.

Этот код предполагает, что опция henrik_feat_pages – это упорядоченный список идентификаторов сообщений.

Обновление 2

Как показать конкретную запись с известным идентификатором сообщения, сначала $first_post_id :

 // Create ordered array of posts to show, with $first_post_id first $posts_to_show = array_merge( (array) $first_post_id, (array) get_option( 'henrik_feat_pages' ) ); // Get the pages whose IDs are in $posts_to_show $posts = get_posts( array( 'post_type' => 'page', 'post__in' => $posts_to_show ) ); // Create ordered post array: $posts_by_id = array(); foreach( $posts as $post ) $posts_by_id[$post->ID] = $post; // Output loop: global $post; foreach( $posts_to_show as $post_id ) { $post = $posts_by_id[$post_id]; setup_postdata( $post ) // ... Template code as if you were in the loop. } 

Обратите внимание, что я упростил запрос в get_posts() чтобы были предоставлены только аргументы post_type и post__in . Нет необходимости указывать порядок, так как сообщения упорядочиваются в коде.