web-dev-qa-db-ja.com

非常に遅いページ - クエリ数を最適化する方法

編集12/19/2011

もう一度ありがとうIjaas。日の順序を除いて、すべてがうまくいっています。公開順で日のグループを並べ替えています。古い投稿のmeta_keyの日付が新しい場合、古いmeta_keyを持つ新しい公開投稿の前になります。ある日のイベントは正しくソートされますが、日はソートされません。

何か考えがありますか?

これが私が使っている現在のコードです。

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

?>

カスタム投稿タイプをループし、meta_boxesに入力された日付でソートするページがあります。以前は妥当な速度で動作していたようですが、現在は非常に遅いです。私が私の質問とphp要求の順序でしている論理的な間違いが多分あるかもしれませんが、私はそれを最適化する方法を知りません。

これがページにロードされるコードです。

見やすくするためにPastebinの*オリジナル*コードにリンクします。 Pastebinコード

これは、投稿のメタデータを作成するfunctions.phpのコードです。このコードセクションのペーストビンへのリンク: メタボックスコード

前もって感謝します。

編集12/14/2011 - オリジナルのコードを以下の例に置き換えました。私は正しい方向に進んでいますか?オリジナルコードはまだ 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 on 2011年12月14日 - 上記の修正されたコード例を追加しました

私はそれが以下のこのセクションにあることをかなり確信しています、なぜなら私が "Upcoming"ループを出すときにページがスピードアップするからです。何がおかしいのですか?

ペーストビンの疑わしいセクションへのリンク: 疑わしいコード

<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

遅れてしまい申し訳ありません。これは、今日から10日後までの間に投稿を検索し、それらを順番に並べ替えて表示する要約クエリです。

理論的には動作するはずですが、エラーが発生したかどうかを教えてください。

更新日:2012/12/22 - 並べ替えの修正

<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

私が見る2つのことが、これをスピードアップする可能性が非常に高いです。

最初にWP Queryでネイティブ時間パラメーターを使用してから、カスタムの "もの"を実行します。 http://codex.wordpress.org/Class_Reference/WP_Query#Time_Parameters

get_post_customの代わりにget_post_metaを使用してください。 http://codex.wordpress.org/Function_Reference/get_post_custom

1
Wyck