Intereting Posts
Переопределить вложенные файлы шаблонов файлов i Как добавить открытые теги? Как добавить второй раздел контента при использовании определенного шаблона страницы Как я могу использовать отдельный домен для сокращения URL? редактирование шрифтов ссылок категории из the_category () funtion слайд-шоу не отображается в сообщении с ajax Получите WordPress для использования другого пользовательского файла «author.php» («custom-author-file.php») Каков наилучший способ выяснить, какой файл шаблона используется для «довольно постоянной ссылки»? Не удается получить объект бабушки и дедушки Как выводить CSS в начало таблицы стилей в WordPress Plugin Передача параметров на статическую главную страницу Почему не будет стиль child.css дочерней темы переопределить css плагина Почему так много популярных тем WordPress «в штучной упаковке» на 940 пикселей? Вывод всех изображений из галереи внутри слайдера Шрифт не загружается

сокращение количества вызовов wp_query

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

Каждая панель имеет левый столбец, отображающий признак, и правый столбец, отображающий 6 эскизов; на каждой вкладке я делаю две петли wp_query, первая – отображаемое изображение, а вторая – 6 эскизов (исключая выделенную запись).

Мне интересно, но если это самый эффективный способ делать что-то, так как есть 10 вкладок, так что в главном меню используется 20 wp_query.

Пример кода для одной из вкладок ниже:

<div class="displaymenu"><div class="menucontent"> <div class="leftdisplaymenu padding"> <?php global $quote_id; $quote_id=array(); // setup an array to store post ids to exclude from future queries $argsformainquotes=array( 'posts_per_page' => '1', 'post_status' => 'publish', 'tag' => 'quotes', ); $mainquotes = new WP_Query($argsformainquotes); while ($mainquotes->have_posts()) : $mainquotes ->the_post(); $idforquote=get_the_id(); $quote_id[]=$idforquote; // add the id of this post to exclusion array $post_thumbnail_id = get_post_thumbnail_id(); $post_thumbnail_url = wp_get_attachment_image_src( $post_thumbnail_id,'bigfeature'); ?><div class="mainimg"><a href="<?php the_permalink();?>" target="_blank"><img src="<?php echo $post_thumbnail_url[0];?>" alt=" <?php the_title();?>" class="thumblist" height="240" width="240" /></a><div class="imgtitle"><a href="<?php the_permalink();?>" title="<?php the_title();?>" class="tablinktitles"><?php the_title();?></a></div><br /><?php $small_excerpt=get_the_excerpt();echo substr($small_excerpt,0,100);?><br /><br /><a href="<?php the_permalink();?>" class="tablinktitles">read more...</a></div><?php endwhile;?> <div></div></div> <div class="rightdisplaymenu"><ul><?php $argsforquotes=array( 'posts_per_page' => '6', 'post_status' => 'publish', 'tag' => 'quotes', 'post__not_in' => $quote_id, ); $quotes = new WP_Query($argsforquotes); while ($quotes->have_posts()) : $quotes ->the_post();?> <li><?php $post_thumbnail_id = get_post_thumbnail_id(); $post_thumbnail_url = wp_get_attachment_image_src( $post_thumbnail_id,'smallfeature' ); ?><a href="<?php the_permalink();?>" target="_blank"><img src="<?php echo $post_thumbnail_url[0];?>" alt=" <?php the_title();?>" height="140" width="140" class="thumblist" /></a><br /><a href="<?php the_permalink();?>"><?php $trunctitle=get_the_title();echo substr($trunctitle,0,20);?>...</a></li><?php endwhile;?> </ul><div class="furtherlink"><a href="http://www.aplacetolovedogs.com/tag/quotes/" title="More of Your Dog Quotes">More Quotes...</a></div></div> </div></div> 

Solutions Collecting From Web of "сокращение количества вызовов wp_query"

Вместо того, чтобы запрашивать один элемент, а затем снова запрашивать еще 6 исключений, вы можете просто сделать один запрос для 7 элементов и выборочно вывести разметку, проверив, какое сообщение вы в настоящее время выводете в цикле через $your_query_object->current_post , Вы также можете комбинировать это с $your_query_object->rewind_posts() чтобы проходить через один и тот же цикл несколько раз в шаблоне.

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