2016-10-21 3 views
0

Эта пользовательская страница занимает не менее 40 секунд для загрузки. Остальные страницы загружаются менее чем за 3 секунды. Я хочу показать сообщение только на сегодня на первой странице, как сегодняшние новости. Что не так с кодом?пользовательская страница займет много времени, чтобы загрузить на Wordpress. Показывает сообщение на сегодня (или последнее сообщение)

<div class="row"> 
<?php list($latest_post) = get_posts(array("posts_per_page"=>1)); 
    $date = substr($latest_post->post_date, 0,10); // Show only news from this date 
?> 

<div class="medium-8 large-8 columns" role="main"> 
<?php 
unset($counter); 
/*these are the category ID */ 
$cats = array(49, 10, 50); 
#$cats = get_categories(); 
foreach($cats AS $cat): 
    $posts = get_posts(array("posts_per_page"=>100, "category"=>$cat)); 
    $catname = get_the_category_by_ID($cat); 

    $foundPost = false; 
    foreach($posts AS $post): 
     $postdate = substr($post->post_date, 0,10); 
     if($postdate!=$date) break; 

     if(!$foundPost) { // Print title if at least one post is found 
      $foundPost = true; 
     if (in_category('Category Text')) { 
      echo '<div class="redBackground">'.$catname.'</div>'; 
      } 
     } 
     ?> 

     <?php 
     the_post(); 
     ?> 
     <div class="row"> 
     <div class="small-2 columns"><?php the_post_thumbnail();?></div> 
    <div class="small-10 columns"> <div class="fontSize"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 
    <div class="contentTag"><?php the_tags(''); ?></div> 
<div class="contentText"> <span style="color: #000"><?php echo people_Content(150); ?></span> 
      </div></div> 
       </div> 
      <?php 

?> 
     <?php 
    endforeach; 
endforeach; ?> 


</div> 
</div> 
+1

Я вижу «posts_per_page» => 100 - Сколько сообщений выводите, потому что 100 может занять некоторое время, в зависимости от того, что показывается , – Fencer04

+0

Спасибо, что немного помогает. Но это все еще вроде медленнее. –

+0

Вам не нужно перебирать все те. Я пишу код для ответа. – Fencer04

ответ

1

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

//Get todays date 
$today = getdate(); 
/*these are the category ID */ 
$cats = array(49, 10, 50); 
//setup arguments for query including today's date 
$args = array(
    'category__in' => $cats, 
    'date_query' => array(
     'year' => $today['year'], 
     'month' => $today['mon'], 
     'day' => $today['mday'], 
) 
); 

// The Query 
$query = new WP_Query($args); 

// The Loop 
if ($query->have_posts()) { 
    while ($query->have_posts()) { 
     $query->the_post(); 
     // this is where you will print out the details of each post 
    } 
} else { 
    //There were no posts for today. 
} 

// Restore original Post Data (you may not need this but it can't hurt) 
wp_reset_postdata(); 
+1

Я нашел ошибку, поэтому обновил код. Вы можете поместить любой из ваших выходных кодов, где в комментарии говорится: «Здесь вы будете печатать детали каждого сообщения». Суть ответа в том, что вам нужно запустить запрос, как показано. Я добавил цикл, чтобы вы могли разместить свой код в нужном месте. Код пойдет в ваш div с ролью = «основной». – Fencer04

+0

И что, если я хочу по-прежнему иметь последнее сообщение на моей первой странице, которое сегодня не является новостью? Я не хочу ставить. На сегодня не было почты, вместо этого я хочу иметь последнее сообщение. Спасибо –

+0

@ParbhuBissessar. Вы проверили бы, был ли приведенный выше запрос иметь какие-либо результаты и если он не запускал обычный запрос. – Fencer04

Смежные вопросы