按特定术语顺序按术语分隔的自定义POST类型档案循环

时间:2013-09-26 作者:user27786

我有一个注册的自定义帖子类型(我们的团队),还有一个包含多个术语的分类法(团队类别)。每个学期都有多个职位分配给它。在我的自定义帖子类型存档(archive our team.php)中,我使用下面的代码按术语分隔我的循环,这很好,但默认按术语按字母顺序排列:

术语名称-此术语中的所有帖子

B学期名称-本学期所有职位

C学期名称-本学期所有职位

我不知道如何自定义条款的顺序,以便获得类似(我想要的任何顺序)的内容:

C学期名称-本学期所有职位

术语名称-此术语中的所有帖子

B学期名称-本学期所有职位

有没有办法为分类法中的每个术语设置序号,所以当我get_terms 然后输出foreach 它们是我想要的顺序吗?

<?php //for a given post type, return all
$post_type = \'our-team\';
$tax = \'team-categories\';
$tax_terms = get_terms($tax);
if ($tax_terms) {
    foreach ($tax_terms  as $tax_term) {
        $args=array(
          \'post_type\' => $post_type,
          "$tax" => $tax_term->slug,
          \'post_status\' => \'publish\',
          \'posts_per_page\' => -1,


        );

        $my_query = null;
        $my_query = new WP_Query($args);
        if( $my_query->have_posts() ) {

            echo \'<h2 style="clear:both;">\'.$tax_term->name.\'</h2>\';
            while ($my_query->have_posts()) : $my_query->the_post(); 
             //set vars for custom fields
            $team_location = get_field(\'team_location\');
            $team_position = get_field(\'team_position\');
            $team_email = get_field(\'team_email\');
            $team_name = get_the_title();
            $team_link = get_permalink();

            //get only first name. usage: echo $first_name[0];
            $team_first_name = $team_name;
            $first_name = explode(\' \', trim($team_first_name));
            ?>
                <div class="team_member">
                    <?php if ( has_post_thumbnail()) { ?>
                        <a class="thickbox" href="<?php echo $team_link; ?>"><?php the_post_thumbnail(\'medium\'); ?></a>                     
                    <?php } else { ?>
                        <img src="<? bloginfo(\'template_directory\' );?>/library/images/no_pic.jpg" alt="no image provide" />
                    <?php } ?>

                    <div class="team_member_info">
                        <h2><?php the_title();?></h2>
                        <p><a class="thickbox" href="<?php echo $team_link; ?>">More info <?php// echo $first_name[0]; ?></a></p>
                        <?php if ($team_email) : ?><p><a href="mailto:<?php echo $team_email;?>">Email <?php echo $first_name[0]; ?></a></p><?php endif; ?>
                    </div>
                </div> <?php 
            endwhile;
        } 
  }
} 
?>

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

你可以用这个awesome plugin 为分类法提供排序顺序。它很旧,但仍在WordPress 3.6上使用,可能也是最新版本。

SO网友:Daithí

我的解决方案是将术语顺序存储为帖子的元数据。

//reset terms
if( is_array( $_POST[\'genres\'] ) && count( $_POST[\'genres\'] ) ){
    $_POST[\'genres_order\'] = ( $_POST[\'genres\'] = array_map( \'intval\', $_POST[\'genres\'] ) );
    wp_set_object_terms( $_POST[\'ID\'], $_POST[\'genres\'], \'nv_genre\', false ); //will replace any previous genres
}
然后,当我检索这些术语时,我可以按id排序。这里有更详细的解释:Control term order on a per-post basis

结束

相关推荐

Order terms by term_order

Context帖子类型:资源分类法:媒体类型,术语:音频分类法:系列以下代码显示自定义分类法“系列”的唯一列表我想按term\\u顺序排列列表,但它不起作用。有什么建议吗?这个site. 目前按ID订购 <?php $post_data = array(); $my_query = new WP_Query( array( \'post_type\

按特定术语顺序按术语分隔的自定义POST类型档案循环 - 小码农CODE - 行之有效找到问题解决它

按特定术语顺序按术语分隔的自定义POST类型档案循环

时间:2013-09-26 作者:user27786

我有一个注册的自定义帖子类型(我们的团队),还有一个包含多个术语的分类法(团队类别)。每个学期都有多个职位分配给它。在我的自定义帖子类型存档(archive our team.php)中,我使用下面的代码按术语分隔我的循环,这很好,但默认按术语按字母顺序排列:

术语名称-此术语中的所有帖子

B学期名称-本学期所有职位

C学期名称-本学期所有职位

我不知道如何自定义条款的顺序,以便获得类似(我想要的任何顺序)的内容:

C学期名称-本学期所有职位

术语名称-此术语中的所有帖子

B学期名称-本学期所有职位

有没有办法为分类法中的每个术语设置序号,所以当我get_terms 然后输出foreach 它们是我想要的顺序吗?

<?php //for a given post type, return all
$post_type = \'our-team\';
$tax = \'team-categories\';
$tax_terms = get_terms($tax);
if ($tax_terms) {
    foreach ($tax_terms  as $tax_term) {
        $args=array(
          \'post_type\' => $post_type,
          "$tax" => $tax_term->slug,
          \'post_status\' => \'publish\',
          \'posts_per_page\' => -1,


        );

        $my_query = null;
        $my_query = new WP_Query($args);
        if( $my_query->have_posts() ) {

            echo \'<h2 style="clear:both;">\'.$tax_term->name.\'</h2>\';
            while ($my_query->have_posts()) : $my_query->the_post(); 
             //set vars for custom fields
            $team_location = get_field(\'team_location\');
            $team_position = get_field(\'team_position\');
            $team_email = get_field(\'team_email\');
            $team_name = get_the_title();
            $team_link = get_permalink();

            //get only first name. usage: echo $first_name[0];
            $team_first_name = $team_name;
            $first_name = explode(\' \', trim($team_first_name));
            ?>
                <div class="team_member">
                    <?php if ( has_post_thumbnail()) { ?>
                        <a class="thickbox" href="<?php echo $team_link; ?>"><?php the_post_thumbnail(\'medium\'); ?></a>                     
                    <?php } else { ?>
                        <img src="<? bloginfo(\'template_directory\' );?>/library/images/no_pic.jpg" alt="no image provide" />
                    <?php } ?>

                    <div class="team_member_info">
                        <h2><?php the_title();?></h2>
                        <p><a class="thickbox" href="<?php echo $team_link; ?>">More info <?php// echo $first_name[0]; ?></a></p>
                        <?php if ($team_email) : ?><p><a href="mailto:<?php echo $team_email;?>">Email <?php echo $first_name[0]; ?></a></p><?php endif; ?>
                    </div>
                </div> <?php 
            endwhile;
        } 
  }
} 
?>

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

你可以用这个awesome plugin 为分类法提供排序顺序。它很旧,但仍在WordPress 3.6上使用,可能也是最新版本。

SO网友:Daithí

我的解决方案是将术语顺序存储为帖子的元数据。

//reset terms
if( is_array( $_POST[\'genres\'] ) && count( $_POST[\'genres\'] ) ){
    $_POST[\'genres_order\'] = ( $_POST[\'genres\'] = array_map( \'intval\', $_POST[\'genres\'] ) );
    wp_set_object_terms( $_POST[\'ID\'], $_POST[\'genres\'], \'nv_genre\', false ); //will replace any previous genres
}
然后,当我检索这些术语时,我可以按id排序。这里有更详细的解释:Control term order on a per-post basis