web-dev-qa-db-fra.com

Page très lente - Comment optimiser le nombre de requêtes?

EDIT le 19/12/2011

Merci encore Ijaas. Tout fonctionne sauf l'ordre des jours. C'est commander les groupes de jours par l'ordre de publication. Si une ancienne publication a une date plus récente dans sa méta_key, celle-ci est antérieure à une publication publiée plus récente avec une ancienne méta_key. Il trie correctement les événements d'un jour mais ne trie pas les jours.

Avez-vous une idée pourquoi?

Voici le code actuel que j'utilise.

    <h1>Upcoming</h1>
<?php

$convertedtime = "Y-m-d H:i"; // Time format You can remove this if it is defined before
$convertedtime = "g:i"; // convert to 12 hour clock and minutes for upcomming events sidebar
$convertedendtime = "g:i a"; // convert to 12 hour clock and minutes for upcomming events sidebar
$today  = date ( 'Y-m-d H:i' ); 
$thedate = time(); // IF you want to start from a future date use strtotime( FutureDateHere );
$thedate = date ( 'Y-m-d H:i' , $thedate );
$future = strtotime ( '+10 Days' ); // IF you want to start from a future date use strtotime( '+10 Days', strtotime( FutureDateHere ) );
$future = date ( 'Y-m-d H:i' , $future );

$times  = array();
$events = array();

$keys = array('opening_time', 'closing_time', 'artist_talk_time', 'special_event_time', 'lecture_time', 'panel_time', 'workshop_time');

$args = array(
 'post_type' => 'event',
 'orderby'     => 'meta_value',
 'order'       => 'asc',
 'meta_query' => array(
/* 'relation' => 'NONE',*/
    array(
        'key' => $keys,
        'value' => array($today,$future),
        'compare' => 'BETWEEN',
        'type' => 'DATE'
    ),

)
);

$event_query = new WP_Query( $args ); 
if ($event_query->have_posts()) : while ($event_query->have_posts()) :  $event_query->the_post(); 

    // Storing events in array is more efficent than using get_the_title, ect... later on
    $events[$post->ID] = array(
        'title'     => apply_filters('the_title', $post->post_title),
        'link'      => get_permalink($post->ID),
        'thumbnail' => get_the_post_thumbnail($post->ID, 'upcoming_event_sidebar'),
        'venue'     => get_post_meta($post->ID,'event_venue', true),
        'custom_venue' => get_post_meta($post->ID,'custom_event_venue', true),
        'opening_time_end' => get_post_meta($post->ID,'opening_time_end', true),
        'closing_time_end' => get_post_meta($post->ID,'closing_time_end', true),
        'artist_talk_time_end' => get_post_meta($post->ID,'artist_talk_time_end', true),
        'special_event_time_end' => get_post_meta($post->ID,'special_event_time_end', true),
        'lecture_time_end' => get_post_meta($post->ID,'lecture_time_end', true),
        'panel_time_end' => get_post_meta($post->ID,'panel_time_end', true),
        'workshop_time_end' => get_post_meta($post->ID,'workshop_time_end', true)
    );


    $custom_field_keys = get_post_custom_keys();

    foreach ($custom_field_keys as $custom_field_key) {

        if (in_array($custom_field_key, $keys)) {
            $custom_field_value = get_post_meta($post->ID, $custom_field_key, true);
            if ($custom_field_value >= $thedate && $custom_field_value <= $future) {
                $times[date('Y-m-d', strtotime($custom_field_value))][] = array($custom_field_value, $post->ID, $custom_field_key);  
                $events[$post->ID][$custom_field_key] = $custom_field_value; //opening_time, closing_time.......

            }
        }
    }

endwhile;

    foreach($times as $day => $list): if($num = count($list)):

        sort($list);

        echo "<ul>"; // Start a day
        ?>
            <li class="sidebar_event_top">
                <h1>
                    <span class="total">
                        <?php echo $num.(($num >= 2)? " Events " : " Event "); ?>                    
                    </span> <!-- end .total -->
                    <span class="day_sidebar">
                        <?php echo ($day == $today)? "Today" : date( 'l', strtotime($day) ); ?>                
                    </span> <!-- end .day -->
                    <span class="date_sidebar">                    
                    <?php echo date( 'F j', strtotime($day) ); ?>
                    </span><!-- end .date -->
                </h1>
            </li>

        <?php

        foreach($list as $ev){

            $time_value = $ev[0]; $post_id = $ev[1]; $time_key = $ev[2];
            $e = (object) $events[$post_id];

            if ($time_key == 'opening_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Opening</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->opening_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->opening_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

            <?php } else if ($time_key == 'closing_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Closing</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                       <h5><?php echo date( $convertedtime, strtotime( $e->closing_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->closing_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

            <?php } else if ($time_key == 'artist_talk_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Artist Talk</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->artist_talk_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->artist_talk_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

            <?php } else if ($time_key == 'special_event_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Special Event</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->special_event_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->special_event_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

             <?php } else if ($time_key == 'lecture_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Lecture</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->lecture_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->lecture_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

             <?php } else if ($time_key == 'panel_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Panel</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->panel_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->panel_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

             <?php } else if ($time_key == 'workshop_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Workshop</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->workshop_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->workshop_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->
            <?php }
        }

        echo "</ul>"; // End a day

    endif; endforeach;



endif; // END $event_query->have_posts();

?>

J'ai une page qui parcourt un type de message personnalisé et trie par dates entrées dans meta_boxes. Avant, cela semblait fonctionner à une vitesse raisonnable, mais maintenant, il est extrêmement lent. Il y a probablement une erreur logique que je fais dans l'ordre de mes requêtes et requêtes php mais je ne sais pas comment l'optimiser.

Voici le code qui est chargé sur la page.

Lien vers le code * original * sur Pastebin pour un affichage plus facile: Code Pastebin

Voici le code du fichier functions.php qui crée les métadonnées pour les publications. Lien vers Pastebin de cette section de code: Code de la boîte méta

Merci d'avance.

EDIT 12/14/2011 - Remplacement du code d'origine par l'exemple ci-dessous. Suis-je sur la bonne voie? Le code original est encore disponible sur Pastebin Link .

        <?php
    /* Let's get all the meta date in one call rather then so many queries */

    $event_custom_meta=get_post_custom($post->ID); // Get all the data 

    $event_start_date = $event_custom_meta['start_date'][0];  /* Not sure why I need [0] here but it returns Array if I don't have it */
    $event_end_date = $event_custom_meta['end_date'][0];
    $event_opening_time = $event_custom_meta['opening_time'][0];
    $event_closing_time = $event_custom_meta['artist_closing_time'][0];
    $event_lecture_time = $event_custom_meta['lecture_time'][0];
    $event_panel_time = $event_custom_meta['panel_time'][0];
    $event_special_event_time = $event_custom_meta['special_event_time'][0];
    $event_workshop_time = $event_custom_meta['workshop_time'][0];
    $event_event_venue = $event_custom_meta['event_venue'][0];
    $event_custom_event_venue = $event_custom_meta['custom_event_venue'][0];

    echo $event_start_date;
    echo $event_end_date;
    echo $event_opening_time;
    echo $event_closing_time;
    echo $event_artist_talk_time;
    echo $event_lecture_time;
    echo $event_panel_time;
    echo $event_special_event_time;
    echo $event_workshop_time;
    echo $event_event_venue;

    /* The test works. Alright, now I can echo these variables anyplace that I want */

    /* Replace the previous code below with the cleaner code after*/
    ?>
    <!-- old code -->
    <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title('<h2>', '</h2>'); ?></a>

    <a href=""><h3><?php  

        if (get_post_meta(get_the_ID(),'event_venue', true) != 'other') { 
            echo get_post_meta(get_the_ID(),'event_venue', true);
            }
        if (get_post_meta(get_the_ID(),'event_venue', true) == 'other') {
            echo get_post_meta(get_the_ID(),'custom_event_venue', true);
            }
    ?></h3></a> 


    <!-- new code -->
    <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title('<h2>', '</h2>'); ?></a>

    <a href=""><h3><?php  

        if ($event_event_venue != 'other') { 
            echo $event_event_venue;
            }
        if ($event_event_venue == 'other') {
            echo $event_custom_event_venue;
            }
    ?></h3></a> 
    <!-- end new code -->

   <?php 
   /* is calling the function get_related_event data another query?  
   *Is there away to add this infor to the orignial meta_box setup?
   */
   echo get_related_event_data( $event_event_venue, 'address' ); 
   echo get_related_event_data( $event_event_venue, 'phone_no' ); 
   echo get_related_event_data( $event_event_venue, 'url' ); 
   /* end question */
   ?>

END EDIT le 14/12/2011 - ajout de l'exemple de code révisé ci-dessus

Je suis à peu près sûr que cela se trouve dans la section ci-dessous, car la page accélère lorsque je retire la boucle "À venir". Qu'est-ce que je fais mal?

Lien vers la section suspecte sur Pastebin: code suspect

<h1>Upcoming</h1>

  <?php
  for ($i=0; $i<10; $i++) {
  $thedate = strtotime ( '+'.$i.' day' , strtotime ( $today ) ) ;
  $thedate = date ( 'Y-m-d H:i' , $thedate );

  $thedaytext = strtotime ( '+'.$i.' day' , strtotime ( $todaytext ) ) ;
  $thedaytext = date ( 'l' , $thedaytext );

  $thedatetext = strtotime ( '+'.$i.' day' , strtotime ( $todaydatetext ) ) ;
  $thedatetext = date ( 'F j' , $thedatetext );

  $future = strtotime ( '+24 hours' , strtotime ( $thedate ) ) ;
  $future = date ( 'Y-m-d H:i' , $future ); 
  $times = array();  // put before the $event_query and seems to work

  $args = array(
       'post_type' => 'event',
       'orderby'     => 'meta_value',
       'order'       => 'asc',
       'meta_query' => array(
       'relation' => 'OR',
          array(
              'key' => 'opening_time',
              'value' => array($today,$future),
              'compare' => 'BETWEEN',
              'type' => 'DATE'
          ),
          array(
              'key' => 'artist_talk_time',
              'value' => array($today,$future),
              'compare' => 'BETWEEN',
              'type' => 'DATE'
          ),
          array(
              'key' => 'closing_time',
              'value' => array($today,$future),
              'compare' => 'BETWEEN',
              'type' => 'DATE'
          ),
          array(
              'key' => 'special_event_time',
              'value' => array($today,$future),
              'compare' => 'BETWEEN',
              'type' => 'DATE'  
          )
      )
  );

  $event_query = new WP_Query( $args ); 
  if ($event_query->have_posts()) : while ($event_query->have_posts()) :  $event_query->the_post();  

  $keys = array('opening_time', 'closing_time', 'artist_talk_time', 'special_event_time');
  $custom_field_keys = get_post_custom_keys();

  foreach ($custom_field_keys as $custom_field_key) {
     if (in_array($custom_field_key, $keys)) {    
          $custom_field_value = get_post_meta($post->ID, $custom_field_key, true);
          if ($custom_field_value >= $thedate && $custom_field_value <= $future) {
             $counttest++;
             $times[] = array($custom_field_value, $post->ID, $custom_field_key);
          }
      }
  }     

  endwhile;
  ?>

  <ul>

  <?php
  if ($counttest >0) {
  ?>
  <li>
  <h1 class="upcoming_date">
  <span class="total">
  <?php 
      echo $counttest;
      if ($counttest>=2) {
          echo ' Events ';
      } // end if ($totalevents>=2) function
      if ($counttest<2) { 
          echo ' Event ';
      }
  ?>

  </span> <!-- end .total -->
  <span class="day_sidebar">

  <?php
      if ($thedate==$today) {
          echo 'Today';
      }
      if ($thedate>$today) {
          echo $thedaytext;
      }
  ?>

  </span> <!-- end .day -->
  <span class="date_sidebar">

  <?php
      echo $thedatetext;
  ?>
  </span><!-- end .date -->
  </h1>
  </li>

  <?php
  }
  endif;
  $counttest=0;

  sort($times); // I changed the asort to sort here

       foreach ($times as $event) { $time_value = $event[0]; $post_id = $event[1]; $time_key = $event[2];  // changed the foreach here

      if ($time_key == 'opening_time') { ?>

      <li class="sidebar_event">
      <a href="<?php echo get_permalink($post_id) ?>" title="<?php echo get_the_title($post_id); ?>"> <?php echo get_the_post_thumbnail($post_id, 'upcoming_event_sidebar'); ?></a> 

      <h2><a href="<?php echo get_permalink($post_id) ?>" title="<?php echo get_the_title($post_id); ?>"> <?php echo get_the_title($post_id); ?></a></h2> 
      <h3>Opening</h3>
      <h4>

   <?php
      if (get_post_meta($post_id,'event_venue', true) != 'other') { 
          echo get_post_meta($post_id,'event_venue', true);
          }
      if (get_post_meta($post_id,'event_venue', true) == 'other') {
          echo get_post_meta($post_id,'custom_event_venue', true);
          }

   ?> 
   </h4>
   <h5><?php $opening_time_formated = date($convertedtime, strtotime( get_post_meta($post_id,'opening_time', true)));
        echo $opening_time_formated;?> </h5>
            <hr />
      </li><!-- end .sidebar_event -->
      <?php }

      else if ($time_key == 'artist_talk_time') { ?>

      <li class="sidebar_event">
      <a href="<?php echo get_permalink($post_id) ?>" title="<?php echo get_the_title($post_id); ?>"> <?php echo get_the_post_thumbnail($post_id, 'upcoming_event_sidebar'); ?></a> 

      <h2><a href="<?php echo get_permalink($post_id) ?>" title="<?php echo get_the_title($post_id); ?>"> <?php echo get_the_title($post_id); ?></a></h2> 
      <h3>Artist Talk</h3>
      <h4><?php echo get_post_meta($post_id,'event_venue', true);?> </h4>
      <h5><?php $artist_talk_time_formated = date($convertedtime, strtotime( get_post_meta($post_id,'artist_talk_time', true)));
        echo $artist_talk_time_formated;?>  </h5>
      <hr />
      </li><!-- end .sidebar_event -->
      <?php }

       else if ($time_key == 'closing_time') { ?>
       <li class="sidebar_event">
       <a href="<?php echo get_permalink($post_id) ?>" title="<?php echo get_the_title($post_id); ?>"> <?php echo get_the_post_thumbnail($post_id, 'upcoming_event_sidebar'); ?></a> 

      <h2><a href="<?php echo get_permalink($post_id) ?>" title="<?php echo get_the_title($post_id); ?>"> <?php echo get_the_title($post_id); ?></a></h2> 
      <h3>Closing</h3>
      <h4><?php echo get_post_meta($post_id,'event_venue', true);?> </h4>
      <h5><?php echo get_post_meta($post_id,'closing_time', true);?> </h5>
      <hr />
      </li><!-- end .sidebar_event -->
      <?php }

       else if ($time_key == 'special_event_time') { ?>
       <li class="sidebar_event">
       <a href="<?php echo get_permalink($post_id) ?>" title="<?php echo get_the_title($post_id); ?>"> <?php echo get_the_post_thumbnail($post_id, 'upcoming_event_sidebar'); ?></a> 

      <h2><a href="<?php echo get_permalink($post_id) ?>" title="<?php echo get_the_title($post_id); ?>"> <?php echo get_the_title($post_id); ?></a></h2> 
      <h3>Special Event</h3>
      <h4><?php echo get_post_meta($post_id,'event_venue', true);?> </h4>
      <h5><?php $special_event_time_formated = date($convertedtime, strtotime( get_post_meta($post_id,'special_event_time', true)));
        echo $special_event_time_formated;?></h5>
      <hr />
      </li><!-- end .sidebar_event -->
      <?php }

       }

        rewind_posts();
  ?>

  </ul>

  <?php
   }
   ?>
   <br />
  <br />
  </div>
1
John Bentwin

désolé pour le retard. Voici la requête condensée qui recherche les publications entre aujourd'hui et les 10 prochains jours, puis les trie et les affiche dans leur ordre.

théoriquement, cela devrait fonctionner, mais laissez-moi savoir si vous obtenez des erreurs.

Mise à jour: 22/12/2012 - Tri résolu

<h1>Upcoming</h1>
<?php

$convertedtime = "Y-m-d H:i"; // Time format You can remove this if it is defined before
$convertedtime = "g:i"; // convert to 12 hour clock and minutes for upcomming events sidebar
$convertedendtime = "g:i a"; // convert to 12 hour clock and minutes for upcomming events sidebar
$today  = date ( 'Y-m-d H:i' ); 
$thedate = time(); // IF you want to start from a future date use strtotime( FutureDateHere );
$thedate = date ( 'Y-m-d H:i' , $thedate );
$future = strtotime ( '+10 Days' ); // IF you want to start from a future date use strtotime( '+10 Days', strtotime( FutureDateHere ) );
$future = date ( 'Y-m-d H:i' , $future );

$times  = array();
$events = array();

$keys = array('opening_time', 'closing_time', 'artist_talk_time', 'special_event_time', 'lecture_time', 'panel_time', 'workshop_time');

$args = array(
 'post_type' => 'event',
 'orderby'     => 'meta_value',
 'order'       => 'asc',
 'meta_query' => array(
/* 'relation' => 'NONE',*/
    array(
        'key' => $keys,
        'value' => array($today,$future),
        'compare' => 'BETWEEN',
        'type' => 'DATE'
    ),

)
);

$event_query = new WP_Query( $args ); 
if ($event_query->have_posts()) : while ($event_query->have_posts()) :  $event_query->the_post(); 

    // Storing events in array is more efficent than using get_the_title, ect... later on
    $events[$post->ID] = array(
        'title'     => apply_filters('the_title', $post->post_title),
        'link'      => get_permalink($post->ID),
        'thumbnail' => get_the_post_thumbnail($post->ID, 'upcoming_event_sidebar'),
        'venue'     => get_post_meta($post->ID,'event_venue', true),
        'custom_venue' => get_post_meta($post->ID,'custom_event_venue', true),
        'opening_time_end' => get_post_meta($post->ID,'opening_time_end', true),
        'closing_time_end' => get_post_meta($post->ID,'closing_time_end', true),
        'artist_talk_time_end' => get_post_meta($post->ID,'artist_talk_time_end', true),
        'special_event_time_end' => get_post_meta($post->ID,'special_event_time_end', true),
        'lecture_time_end' => get_post_meta($post->ID,'lecture_time_end', true),
        'panel_time_end' => get_post_meta($post->ID,'panel_time_end', true),
        'workshop_time_end' => get_post_meta($post->ID,'workshop_time_end', true)
    );


    $custom_field_keys = get_post_custom_keys();

    foreach ($custom_field_keys as $custom_field_key) {

        if (in_array($custom_field_key, $keys)) {
            $custom_field_value = get_post_meta($post->ID, $custom_field_key, true);
            if ($custom_field_value >= $thedate && $custom_field_value <= $future) {
                $times[strtotime($custom_field_value)][] = array($custom_field_value, $post->ID, $custom_field_key);  
                $events[$post->ID][$custom_field_key] = $custom_field_value; //opening_time, closing_time.......

            }
        }
    }

endwhile;

    ksort($times);

    foreach($times as $day => $list): if($num = count($list)):

        sort($list);

        echo "<ul>"; // Start a day
        ?>
            <li class="sidebar_event_top">
                <h1>
                    <span class="total">
                        <?php echo $num.(($num >= 2)? " Events " : " Event "); ?>                    
                    </span> <!-- end .total -->
                    <span class="day_sidebar">
                        <?php echo ($day == $today)? "Today" : date( 'l', $day ); ?>                
                    </span> <!-- end .day -->
                    <span class="date_sidebar">                    
                    <?php echo date( 'F j', $day ); ?>
                    </span><!-- end .date -->
                </h1>
            </li>

        <?php

        foreach($list as $ev){

            $time_value = $ev[0]; $post_id = $ev[1]; $time_key = $ev[2];
            $e = (object) $events[$post_id];

            if ($time_key == 'opening_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Opening</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->opening_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->opening_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

            <?php } else if ($time_key == 'closing_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Closing</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                       <h5><?php echo date( $convertedtime, strtotime( $e->closing_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->closing_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

            <?php } else if ($time_key == 'artist_talk_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Artist Talk</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->artist_talk_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->artist_talk_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

            <?php } else if ($time_key == 'special_event_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Special Event</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->special_event_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->special_event_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

             <?php } else if ($time_key == 'lecture_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Lecture</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->lecture_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->lecture_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

             <?php } else if ($time_key == 'panel_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Panel</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->panel_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->panel_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->

             <?php } else if ($time_key == 'workshop_time') { ?>

                <li class="sidebar_event">
                    <a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->thumbnail ?></a>                        
                    <h2><a href="<?php echo $e->link ?>" title="<?php echo $e->title ?>"> <?php echo $e->title ?></a></h2>
                    <h3>Workshop</h3>
                    <h4><?php echo ($e->venue != 'other')? $e->venue : $e->custom_venue; ?></h4>
                    <h5><?php echo date( $convertedtime, strtotime( $e->workshop_time ) ); echo " - "; echo date( $convertedendtime, strtotime( $e->workshop_time_end ) ) ;?></h5>

                </li><!-- end .sidebar_event -->
            <?php }
        }

        echo "</ul>"; // End a day

    endif; endforeach;



endif; // END $event_query->have_posts();

?>
1
Ijaas

Deux choses que je vois qui vont très probablement accélérer les choses.

Utilisez les paramètres d'heure natifs dans WP _ Interrogez d'abord, puis créez votre "matériel" personnalisé: http://codex.wordpress.org/Class_Reference/WP_Query#Time_Parameters

Utilisez get_post_custom au lieu de get_post_meta: http://codex.wordpress.org/Function_Reference/get_post_custom

1
Wyck