按自定义字段排序自定义帖子类型

时间:2014-06-01 03:25:20

标签: php wordpress sorting loops

如何在Wordpress中按自定义字段对自定义帖子类型进行排序?我试图想出一种方法来回应一个名为“状态”的自定义字段。 按字母顺序并将名为employees的自定义帖子类型链接置于其各自的尊重状态下。

所以它看起来像这样:

阿拉巴马

  • Appleseed,Johnny
  • Chamber,Pete

佛罗里达

  • 米勒,山姆
  • Stark,Amy

    我知道如何为自定义帖子类型编写基本循环,但我不确定如何按字母顺序对属于该帖子类型的自定义字段进行排序。

    <?php $query = new WP_query ( array( 'post_type'=> 'employees', 'meta_key'=> 'state', 
     'orderby'=> 'meta_value', 'order' => 'DESC'));
       while ( $query -> have_posts() ) : $query -> the_post(); ?>
    <?php echo get_post_meta($post->ID, 'state', true); ?>
     <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php
    endwhile;   
    wp_reset_query();  ?>
    

2 个答案:

答案 0 :(得分:0)

你可以这样做:

<?php $query = new WP_query ( array( 'post_type'=> 'employees', 'meta_key'=> 'state', 'orderby'=> 'meta_value', 'order' => 'DESC'));
  while ( $query -> have_posts() ) : $query -> the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
  <?php
endwhile;   
wp_reset_query();  ?>

答案 1 :(得分:0)

最后得益于这个链接:http://pastebin.com/b4WGrMhD

<?php $employeesQuery = new WP_Query(array('post_type' => 'employees', 'meta_key' => 'state', 'orderby' => 'meta_value', 'order' => 'ASC', 'posts_per_page' => '-1')); ?>
  <?php $prevltr = ""; ?>
    <?php if(have_posts()) { while ( $employeesQuery->have_posts() ) { $employeesQuery->the_post(); ?>
            <?php $state = get_post_meta($post->ID, 'state', true); ?>
            <?php $curltr = $state; ?>
            <?php if($curltr != $prevltr) : ?>
                <a name="section-<?php echo $curltr ?>"></a><br class="clear" /><h4><?php echo $curltr; $prevltr = $curltr; ?></h4>
            <?php endif; ?>

            <article class="employee-entry" id="entry-<?php the_title_attribute(); ?>">

                <div><strong><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></strong></div>
                <div><?php $terms = get_the_terms( $post->ID , 'titles' ); foreach( $terms as $term ) { print $term->name; unset($term); } ?></div>

            </article>

<?php }} ?>