it-swarm.com.de

Sehr langsame Seite - So optimieren Sie die Anzahl der Abfragen

EDIT 19.12.2011

Nochmals vielen Dank Ijaas. Alles funktioniert bis auf die Tagesordnung. Es ordnet die Gruppen von Tagen nach der Veröffentlichungsreihenfolge. Wenn ein älterer Beitrag ein neueres Datum in seinem meta_key hat, steht es vor einem neueren veröffentlichten Beitrag mit einem älteren meta_key. Es sortiert die Ereignisse an einem Tag richtig, aber es sortiert nicht die Tage.

Hast du eine Idee warum?

Hier ist der aktuelle Code, den ich verwende.

    <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();

?>

Ich habe eine Seite, die einen benutzerdefinierten Beitragstyp durchläuft und nach in meta_boxes eingegebenen Datumsangaben sortiert. Es schien früher mit einer vernünftigen Geschwindigkeit zu funktionieren, aber jetzt ist es extrem langsam. Es gibt wahrscheinlich einen logischen Fehler, den ich in der Reihenfolge meiner Abfragen und PHP-Anfragen mache, aber ich weiß nicht, wie ich es optimieren soll.

Hier ist der Code, der auf der Seite geladen wird.

Link zum * ursprünglichen * Code im Pastebin zur leichteren Anzeige: Pastebin-Code

Hier ist der Code aus der functions.php, der die Metadaten für die Posts erstellt. Link zum Pastebin dieses Codeabschnitts: Meta Box Code

Danke im Voraus.

EDIT 14.12.2011 - Der Originalcode wurde durch das folgende Beispiel ersetzt. Bin ich auf dem richtigen Weg? Originalcode noch verfügbar unter 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 am 14.12.2011 - überarbeitetes Codebeispiel oben hinzugefügt

Ich bin mir ziemlich sicher, dass es in diesem Abschnitt unten ist, weil die Seite schneller wird, wenn ich die "Upcoming" -Schleife beende. Was mache ich falsch?

Link zum verdächtigen Bereich auf Pastebin: Verdächtiger Code

<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

entschuldigen Sie die Verspätung. Hier ist die komprimierte Abfrage, die nach Posts zwischen heute und 10 Tagen in der Zukunft sucht und diese dann in dieser Reihenfolge sortiert und anzeigt.

theoretisch sollte es funktionieren, aber lass es mich wissen, wenn du Fehler bekommst.

Update: 22.12.2012 - Feste Sortierung

<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

Zwei Dinge, die ich sehe, werden das sehr wahrscheinlich beschleunigen.

Verwenden Sie die nativen Zeitparameter in WP Query und führen Sie dann Ihre benutzerdefinierten "Aufgaben" aus: http://codex.wordpress.org/Class_Reference/WP_Query#Time_Parameters

Verwenden Sie get_post_custom anstelle von get_post_meta: http://codex.wordpress.org/Function_Reference/get_post_custom

1
Wyck