获取分类标准

时间:2017-05-07 14:42:17

标签: php wordpress

我使用以下代码来获取分类标准:

<?php 
    $terms = get_the_terms( $post->ID, 'locations' );
    if ( !empty( $terms ) ){
        $term = array_shift( $terms );
    }
 ?>

然后我使用以下代码输出slug:

<?php echo $term->slug; ?>

我的问题是,如何使用它在同一位置输出两种不同的分类法?例如:

<?php 
    $terms = get_the_terms( $post->ID, 'locations', 'status' );
    if ( !empty( $terms ) ){
        $term = array_shift( $terms );
    }
 ?>

我想我可以添加术语“位置”,“状态”,但它不起作用。

2 个答案:

答案 0 :(得分:0)

如果你想显示两个或更多分类,那么我认为你应该循环$ terms变量。

<?php 
    $terms = get_the_terms( $post->ID, 'locations' );
    if ( !empty( $terms ) ){
        foreach ($terms as $term):
            echo $term->slug;
        endforeach;
    }
?>

希望它可以帮助你。

谢谢

答案 1 :(得分:0)

根据get_the_terms的官方文档,只能提供一种分类法。如果你想在两种不同的分类法中输出所有术语的段落,你可以按照穆罕默德的建议,但两次。

<?php

// output all slugs for the locations taxonomy
$locations_terms = get_the_terms( $post->ID, 'locations' );
if ( ! empty( $locations_terms ) ) {
    foreach ( $locations_terms as $term ) {
        echo $term->slug;
    }
}

// output all slugs for the status taxonomy
$status_terms = get_the_terms( $post->ID, 'status' );
if ( ! empty( $status_terms ) ) {
    foreach ( $status_terms as $term ) {
        echo $term->slug;
    }
}
?>

但是,如果您只想在每个分类法中获得单个术语的段落,您可能会发现get_term_by更有用。

<?php
$loc_field = 'name';
$loc_field_value = 'special location';
$loc_taxonomy = 'locations';
$locations_term = get_term_by( $loc_field, $loc_field_value, $loc_taxonomy );
echo $locations_term->slug;

$stat_field = 'name';
$stat_field_value = 'special status';
$stat_taxonomy = 'status';
$status_term = get_term_by( $stat_field, $stat_field_value, $stat_taxonomy );
echo $status_term->slug;
?>