非常慢的页面--如何优化查询数量?

时间:2011-12-13 作者:John Bentwin

EDIT 12/19/2011

再次感谢你Ijaas。除了白天的秩序外,一切都正常。它按发布顺序对几组天进行排序。如果旧帖子的meta\\u键中有较新的日期,则它位于具有较旧meta\\u键的较新发布帖子之前。它对某一天的事件进行了适当的排序,但不对日期进行排序。

你知道为什么吗?

这是我正在使用的当前代码。

    <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 Code

下面是函数的代码。php,为帖子生成元数据。链接到此代码节的Pastebin:Meta Box Code

提前谢谢你。

EDIT 12/14/2011 - Replaced original code with example below. Am I on the right track? 原始代码仍然可用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 12/14/2011 - added revised code example above

我很确定它在下面的这一部分,因为当我去掉“即将到来的”循环时,页面速度会加快。我做错了什么?

指向Pastebin上可疑部分的链接:Suspicious 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>

2 个回复
最合适的回答,由SO网友:Ijaas 整理而成

抱歉耽搁了。这是一个简明的查询,搜索从今天到未来10天之间的帖子,然后按顺序排序和显示。

理论上应该可以,但如果你有任何错误,请告诉我。

Update: 12/22/2012 - Fixed Sorting

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

?>

SO网友:Wyck

我认为有两件事很可能会加速这一进程。

首先在WP查询中使用本机时间参数,然后进行自定义“填充”: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

结束

相关推荐

Image.php问题-开机自检图像未在其中显示

当我在帖子中插入图像并链接到该图像时,该链接将我直接发送到文件,而不是通过我的图像显示图像。php模板。我如何解决这个问题?我无法在网上找到解决方案。这不是我的[图库]短代码的问题,它将我带到了图像中。php-仅使用单个图像。