自定义发布类型、分类和术语...我现在有点糊涂了!

时间:2013-02-06 作者:Adam Montague

希望我能正确解释这一点,因为我现在对自己想要实现的目标感到困惑!

我有两种自定义帖子类型,“学生”&;“船”

在《学生》中我有分类学的《班级》,然后是分类学的术语;“2012届”、“2011届”等。

在“船”中,我有分类学“项目”,然后是分类学术语;“2012届”、“2011届”等。

我想做的是:在学生的“2012年班级”页面上,我目前有一份所有学生的名单,这没有问题,而且效果很好。我还想在同一页上显示“2012级”船只分类术语中的所有船只。

这就是我遇到麻烦的地方。理想情况下,我希望通过这样的方式获得“2012级”分类法中的所有“boats”:从分类法术语中的boats post类型中获取与当前分类法术语同名的所有帖子。

这有道理吗?!

2 个回复
SO网友:fischi

当您在学生页面上时,您可以非常简单地获得“Classes”分类名称。

$classes = get_the_terms( get_the_ID(), \'Classes\' );
下一步是选择要使用的类,我假设它是列出的第一个类。

$theclass = $classes[\'0\']->name;
您可以获得如下其他分类法:

$projectsterm = get_term_by( \'name\', $theclass, \'Projects\' );
只有当两者具有相同的术语名称时,这才有效!但现在你只需要拿到船上的柱子:

$args = array(
    \'post_type\' => \'boats\',
    \'projects\' => $projectsterm->slug
);
$boats = get_posts( $args );
希望这对你有用!

SO网友:Adam Montague

谢谢你的努力,但你的回答对我不起作用。我已经为我的问题找到了一个解决方案,我不是PHP高手,所以我不确定它是特别“干净”还是正确的做事方式,但这对我来说很有用!。。。

<?php 
    $terms = get_the_terms( $post->id, \'classes\' ); // get an array of all the terms as objects.
    $term_slug = array(); // save the slugs in an array
    $term_name = array(); // save the slugs in an array

    foreach( $terms as $term ) {
        $term_slug[] = $term->slug; // this grabs the hyphenated slug
        $term_name[] = $term->name; // this grabs the actual name
    }           
?>
<?php query_posts( array( \'post_type\' => \'boats\', \'projects\' => $term_slug[0], \'orderby\'=>\'title\',\'order\'=>\'ASC\' ) );
  if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
<li><a href="<?php echo home_url(); ?>?projects=<?php echo $term_slug[0]; ?>"><?php the_title(); ?></a></li>

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

结束

相关推荐