Intereting Posts
Сочетание повторяющихся таксономических терминов woocommerce: при добавлении или удалении элементов в корзину требуется несколько секунд для чтения изменений? Получите идентификатор родительского сообщения медиа (ACF) Расширение WP_List_Table кажется неправильным с $ this-> get_columns () – что случилось? В плагине почему add_action ('init') не выполняется до активации плагина? WP-CLI работает на не установленном WP-CLI экземпляре WordPress? Отображение условного меню Отсутствуют поля страницы профиля пользователя WordPress. Регистрация скрипта / стиля: возможно ли настроить строку запроса версии через плагин? Окно чата, скрывающееся за заголовком Twenty Eleven Размер Gravatar через функции темы? Почему я не вижу pingbacks? пользовательский тип по умолчанию по умолчанию Сделать W3 Total Cache «Очистить все кеши» функция очистить лак Заголовок и почтовый URL на основе пользовательских полей?

Многочисленные петли WordPress в домашней оптимизации

Я запускаю сайт новостей на основе WordPress с несколькими плагинами, включая общий кэш W3C на моем сервере VPS (Nginx + PHP-FPM).

Код нашего home.php:

<!-- STICKY POSTS --> <?php $current_remembered_duplicated = array(); $args_slider = array( 'showposts' => 4, 'category__not_in' => array(1), 'post__in' => get_option( 'sticky_posts' ), // display 4 sticky posts on slider 'ignore_sticky_posts' => 1, 'orderby' => 'date', 'order' => 'DESC', 'no_found_rows' => true, 'post_status' => 'publish', 'post_type'=>'post', 'cache_results' => false, 'update_post_term_cache' => false, 'update_post_meta_cache' => false ); $slider = new WP_Query($args_slider); $i=0; if ($slider->have_posts()) : while ($slider->have_posts()) : $slider->the_post(); $i++; $current_remembered_duplicated[] = get_the_ID(); ?> <!-- POST DATA --> <?php endwhile; endif; wp_reset_postdata(); ?> <!-- END of STICKY POSTS --> <!-- MOST VIEWED POSTS --> <?php add_filter('posts_where', 'filter_where_one_week'); $args_most_viewed = array ( 'showposts'=>3, // display 3 most viewed base on last 7 days 'meta_key' => 'post_views_count', 'orderby' => 'meta_value_num', 'caller_get_posts'=>0, 'ignore_sticky_posts' => 1, 'category__not_in' => array(1), 'pages' => 0, 'post_type'=> 'post', 'no_found_rows' => true, 'post_status' => 'publish', 'cache_results' => false, 'update_post_term_cache' => false, 'update_post_meta_cache' => false ); $query_most_viewed = new WP_Query($args_most_viewed); if ($query_most_viewed->have_posts()) : $row_count=0; while ($query_most_viewed->have_posts()) : $row_count++; $query_most_viewed->the_post(); ?> <?php endwhile; else: ?> <!-- SOME ELSE CODE --> <?php endif; wp_reset_query(); remove_filter('posts_where', 'filter_where_one_week'); ?> <!-- END of MOST VIEWED POSTS --> <!-- MAIN LOOP --> <?php if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) { $paged = get_query_var('page'); } else {$paged = 1;} $args_main_loop = array ( 'paged' => $paged, // on first page, if next page - Infinite Scroll click on "Load more" button 'orderby' => 'date', 'order' => 'DESC', 'ignore_sticky_posts' => 1, 'category__not_in' => array(1), 'posts_per_page' => 12, // display 12 posts per page if paged 'post__not_in' => $current_remembered_duplicated, 'post_status' => 'publish', 'post_type'=>'post', 'cache_results' => false, 'update_post_term_cache' => false, 'update_post_meta_cache' => false ); $query_main_loop = new WP_Query($args_main_loop); if ($query_main_loop->have_posts()) : $row_count=0; while ($query_main_loop->have_posts()) : $row_count++; ?> <?php if( $row_count == 2 ) : // ADVERTISMENT ?><!-- AD CONTENT --><?php endif; ?> <?php if( $row_count == 6 ) : // ADVERTISMENT ?><!-- AD CONTENT --><?php endif; ?> <?php if( $paged <2 && $row_count == 8 ): // OTHER CONTENT ?> <!-- NEW WP_QUERY --> <?php $args_custom_query = array( 'showposts'=>3, // new query, different post category and setup, display 3 posts 'orderby' => 'date', 'order' => 'DESC', 'ignore_sticky_posts' => 1, 'cat' => 28, 'category__not_in' => array(1), 'no_found_rows' => true, 'post_type'=>'post', 'post_status' => 'publish', 'cache_results' => false, 'update_post_term_cache' => false, 'update_post_meta_cache' => false); $custom_query = new wp_query($args_custom_query); if ($custom_query->have_posts()) : while ($custom_query->have_posts()) : $custom_query->the_post(); ?> <?php endwhile; endif; ?> <!-- END of NEW WP_QUERY --> <?php endif; ?> <?php if( $row_count == 11 ) : // ADVERTISMENT ?><!-- AD CONTENT --><?php endif; ?> <?php if( $paged <2 && $row_count == 12 ) : // SOME OTHER CODE ?><!-- OTHER HTML CODE --><?php endif; ?> <?php $query_main_loop->the_post(); // continue 12 posts from main loop ?> <!-- THE POST DATA --> <?php endwhile; else : endif; wp_reset_postdata(); ?> <?php next_posts_link( __( 'BUTTON LOAD MORE!') ); // "next page" loaded with Infinite Scroll on the same page (HOME). Click on link loads next 12 posts, not duplicated from main loop and without advertisment and other stuff ?> <?php get_footer(); ?> <!-- END of HOME --> 

МОЙ ВОПРОС:

Я удивляюсь, может ли этот код быть более оптимизированным для повышения производительности? Тем не менее, у нас достаточно трафика за день ~ 11k.

Мы занимаемся разработкой и поиском оптимальной стоимости, которая изменила хостинг.

Любая помощь или информация будут оценены!

Большое спасибо за обмен!