Форум по программированию > PHP; PERL и ASP
Долго грузится страница вывод новостей. Помогите с кодом
(1/1)
nick_sinigamy:
Добрый день. В коде не сильно понимаю по этому прошу помощи.
Есть страница: https://mariupolfm.com.ua/category/news/
Имеет код:
(нажмите чтобы показать/скрыть)<?php get_header(); ?>
<?php
$args = array('posts_per_page' => -1, 'orderby' => 'date', 'cat' => 3);
$myQuery = new WP_Query($args);
$date = '';
$i = 0;
global $dynamic_featured_image;
?>
<div class="inner-plug">
новости
</div>
<div class="wrapper">
<div class="news-list">
<div class="news-block">
<?php /* ЧАСТЬ ПРОБЛЕМНОГО КОДА НАЧИНАЕТСЯ ТУТ
if ( $myQuery->have_posts() ) : while ( $myQuery->have_posts() ) : $myQuery->the_post();
if ( $date != get_the_date() ) {
$dspl = ($i >= 2) ? "none" : "block";
$i += 1;
$date = get_the_date();
echo "<div class=\"date\" style='display: ".$dspl."'>".$date."</div><ul style='display: ".$dspl."'>";
}
if (get_post_meta(get_the_id(), 'special_news', true)) {
$is_special = "<em>".get_post_meta(get_the_id(), 'special_news_text', true).":</em> ";
} else {
$is_special = "";
}
$featured_images = $dynamic_featured_image->get_featured_images(get_the_id());
//echo "<li><a href='".get_permalink()."' class='link-ani'><span>".get_post_meta(get_the_id(), 'Время', true).$is_special."</span>".get_the_title()."</a></li>";
echo "<li>";
//echo "<a href='".get_permalink()."' class='link-ani'><img src='".$featured_images[0]['full']."' /></a>";
if ($featured_images[0]['full']) {
echo "<a href='".get_permalink()."' class='link-ani news-short-img' style='background-image:url(".$featured_images[0]['thumb'].")'></a>";
}
echo "<div class='news-short-text'>";
echo "<span><a href='".get_permalink()."' class='link-ani'>".get_post_meta(get_the_id(), 'Время', true)."</a></span>";
echo $is_special."<a href='".get_permalink()."' class='link-ani news-short-link'>".get_the_title()."</a>";
echo "</div>";
echo "<div class='clear'></div>";
echo "</li>";
endwhile; endif;
wp_reset_postdata();
ЗАКАНЧИВАЕТСЯ ТУТ */ ?>
</div>
<a class="news-more link-ani" href="#">больше</a>
</div>
<aside class="sidebar">
<?=do_shortcode("[banner group='banners-for-news-page' count=1500]");?>
</aside>
<div class="clear"></div>
</div>
<?php get_footer(); ?>Полностью страница погружается долго и выглядит так:
Если вырезать проблемный код то так:
Вопрос что не так с проблемной частью помогите разобраться?
ProtectYourSite:
Во-первых, этот проблемный блок и отвечает за новости.
Во-вторых, что за дикая логика, грузить кучу новостей в display:none - неудивительно, что так будет тормозить.
nick_sinigamy:
ProtectYourSite,
Не подскажите как найти выход из положения? Плохо понимаю php
Yoh:
Здесь не все так просто. У Вас выводятся формируются все новости сразу, однако только часть сразу отображается на сайте. Именно формирование всех сразу новостей и замедляет работу. Если просто сократить число выводимых новостей в строке
--- Код: ---Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.
--- Конец кода ---
, то это ускорить страницу, но по нажатию кнопки "Больше" новости появляться не будут. Здесь нужно выполнить две вещи выводить новости порционно, а кнопку "Больше" доработать для загрузки новостей через ajax (она будет не просто менять display none на display block, а делать запрос к сайту для получения новой порции новостей).
Если с кодом не разбираетесь, то поставьте плагин WP Super Cache. Включите его после установки, поставьте экспертный режим (это необходимо чтобы страниц отдавались средствами Apache, а не PHP), а также уберите из исключений кэширование запросов роботами. Остальное можно не менять. Это значительно ускорит все страницы сайта, в том числе и проблемную https://mariupolfm.com.ua/category/news/
nick_sinigamy:
Спасибо за помощью сократил вывод новостей до 50 мне пока этого достаточно.
Навигация
Перейти к полной версии