Intereting Posts
Откуда берется язык? Проверьте, существует ли страница Slug, затем отобразите заголовок страницы Возвращает $ post_id, когда DOING_AUTOSAVE? Как сделать мои темы совместимыми с разными версиями WordPress? Форма комментария в теме wordpress возвращает предупреждение javascript Отключите функцию перетаскивания на виджетах панели управления для подписчиков. Каков наилучший способ вывода результата плагина в определенный URL-адрес дополнительный текст в Vimeo Встроенные видео Как сделать интерфейс похожим на многосайтовый для переключения между несколькими (одиночными) сайтами для администраторов? сортируемые столбцы в настраиваемом типе сообщений не будут работать Функция jQuery selectable () не работает в wordpress background_image поддерживает несколько размеров изображения? Ограничить доступ к wp_admin Выпадающее меню по умолчанию (на первой странице) Новое меню «Admin Menu» WordPress 3.1 не отображается на моем сайте или в панели инструментов

сокращение количества вызовов 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 или аналогичный.