因此,我制定了两个自定义分类法,将多个类别添加到页面/项目中。(single work.php)默认值(内置类别)为project type
, 两个新的是client
和agency
.
基本上,我对这三个都使用相同的代码,但我注意到它对这两个自定义类别所做的工作基本上是读取我添加到不同项目中的每个标记,而不是只显示为特定页面选择的标记。
换句话说,它基本上只是显示“从最常用的标签中选择”区域下可以找到的每个标签。尽管每个项目只选择了一个标记。
我希望这有点清楚:)
下面是我使用的代码:
<?php $terms = get_terms( \'portfolio_tags_client\' );
foreach ( $terms as $term ) {
$term_link = get_term_link( $term );
if ( is_wp_error( $term_link ) ) {
continue;
}
echo \'Client: <a href="\' . esc_url( $term_link ) . \'">\' . $term->name . \'</a> <br />\';
}
?>
这是它的分类法,如果这有帮助的话:
register_taxonomy(
\'portfolio_tags_client\', //The name of the taxonomy. Name should be in slug form (must not contain capital letters or spaces).
\'work\', // Post type name
array(
\'hierarchical\' => false,
\'label\' => \'Clients\', // Display name
\'singular_name\' => \'Client\',
\'query_var\' => true,
\'rewrite\' => array(
\'slug\' => \'client\', // This controls the base slug that will display before each term
\'with_front\' => false // Don\'t display the category base before
)
)
);
有人知道会是什么吗?我花了比我想承认的更多的时间来解决这个问题:)
UPDATE 固定的非常感谢你们的帮助。我真的很感激。以下是最终代码:
<?php $post_tags = get_the_terms(get_the_ID(), \'portfolio_tags_client\');
if ($post_tags) {
foreach($post_tags as $tag) {
echo \'Client: <a href="\'.get_tag_link($tag->term_id).\'" title="\'.$tag->name.\'">\'. $tag->name .\'</a> <br />\';
}
}
?>
最合适的回答,由SO网友:Johansson 整理而成
你要找的是get_the_terms()
. 您可以使用以下代码获取当前帖子的自定义条款:
$post_tags = get_the_terms(get_the_ID(), \'portfolio_tags_client\');
if ($post_tags) { ?>
<div class="tags-div">
<h3><?php _e( \'Tags\', \'text-domain\' ); ?></h3>
<div class="post-tags"><?php
foreach($post_tags as $tag) {
echo \'<a href="\'.get_tag_link($tag->term_id).\'" title="\'.$tag->name.\'">\'. $tag->name .\'</a>\';
} ?>
</div>
</div><?php
}
这应该用在你的
single.php
或者呈现文章内容的模板。
get_the_term()
它本身可以在任何地方使用,但由于必须将帖子的ID传递给它,因此应该在适当的模板文件中使用它。