当前位置: 动力学知识库 > 问答 > 编程问答 >

php - Ordering posts via custom meta date

问题描述:

Below is my code which loads a custom post type (show), for some reason whatever I change within the $args nothing changes with the order.

I would like to display shows in date order.

The custom field test_date is in the format of 20140907

Anyone able to shed some light?

 <?php

$args = array(

'post_type' => 'show',

'meta_key' => 'test_Date',

'orderby' => 'meta_value_num',

'order' => 'DESC',

'posts_per_page' => '-1'

);

query_posts($args);

if (have_posts()) : while (have_posts()) : the_post(); ?>

<?php

$limit = 140;

$display_from_date = get_post_meta( get_the_ID(), 'display_from_date', true );

$display_to_date = get_post_meta( get_the_ID(), 'display_to_date', true );

$book_online_link = get_post_meta( get_the_ID(), 'book_online_link', true );

$show_description = get_post_meta( get_the_ID(), 'show_description', true );

$date_formatted = get_post_meta( get_the_ID(), 'date_formatted', true );

$show_content = get_the_content();

$read_more = get_the_permalink();

?>

<div class="showbox">

<div class="showthumb">

<?php the_post_thumbnail('medium'); ?>

</div>

<div class="showdetails">

<div class="showtitle"><?php the_title();?></div>

<div class="showdate">

<strong><?php echo $date_formatted; ?></strong>

</div>

<div class="clear"></div>

<div class="showdescription">

<br />

<?php

if (empty($show_description)){

echo '<em>No description available</em>';

} else {

if (strlen($show_description) > $limit)

$show_description = substr($show_description, 0, strrpos(substr($show_description, 0, $limit), ' ')) . '... <a href="'. $read_more .'" style="font-size:10px; font-style: italic;">Read More</small>';

echo $show_description;

}

?>

</div>

<div class="clear"></div>

<div class="showbuttons">

<a href="<?php the_permalink(); ?>" class="moreinformation">More Information&nbsp;<IMG class='small_arrow_1_right' src='<?php bloginfo('template_url');?>/images/small_arrow_1_right.gif' alt='Next'>&nbsp;</a>

</div>

<div class="clear"></div>

</div>

<div class="clear"></div>

</div>

<?php endwhile; endif; wp_reset_query(); ?>

网友答案:

Its ok, I have managed to do it another way with SQL and that is working perfect!

For reference:

<?php

 $querydetails = "
   SELECT wposts.*
   FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
   WHERE wposts.ID = wpostmeta.post_id
   AND wpostmeta.meta_key = 'test_date'
   AND wposts.post_status = 'publish'
   AND wposts.post_type = 'show'
   ORDER BY wpostmeta.meta_value ASC
 ";

 $pageposts = $wpdb->get_results($querydetails, OBJECT)

 ?>

<?php if ($pageposts):
 foreach ($pageposts as $post):
       setup_postdata($post);

  $limit = 140;
  $display_from_date = get_post_meta( get_the_ID(), 'display_from_date', true );
  $display_to_date = get_post_meta( get_the_ID(), 'display_to_date', true );
  $book_online_link = get_post_meta( get_the_ID(), 'book_online_link', true );
  $show_description = get_post_meta( get_the_ID(), 'show_description', true );
  $date_formatted = get_post_meta( get_the_ID(), 'date_formatted', true );
  $show_content = get_the_content();
  $read_more = get_the_permalink();
  ?>

<div class="showbox">
  <div class="showthumb">
    <?php the_post_thumbnail('medium'); ?>
  </div>
  <div class="showdetails">
    <div class="showtitle"><?php the_title();?></div>
    <div class="showdate">
      <strong><?php echo $date_formatted; ?></strong>
    </div>
    <div class="clear"></div>
    <div class="showdescription">
      <br />
      <?php 
      if (empty($show_description)){
        echo '<em>No description available</em>';
      } else {
        if (strlen($show_description) > $limit)
        $show_description = substr($show_description, 0, strrpos(substr($show_description, 0, $limit), ' ')) . '... <a href="'. $read_more .'" style="font-size:10px; font-style: italic;">Read More</small>';
        echo $show_description;
      }
      ?>
    </div>
    <div class="clear"></div>

    <div class="showbuttons">
      <a href="<?php the_permalink(); ?>" class="moreinformation">More Information&nbsp;<IMG class='small_arrow_1_right' src='<?php bloginfo('template_url');?>/images/small_arrow_1_right.gif' alt='Next'>&nbsp;</a>
    </div>
    <div class="clear"></div>
  </div>
  <div class="clear"></div>
</div>

 <?php endforeach;
endif; ?>
分享给朋友:
您可能感兴趣的文章:
随机阅读: