Php 自定义分类术语页面中的当前分类项

Php 自定义分类术语页面中的当前分类项,php,wordpress,custom-taxonomy,Php,Wordpress,Custom Taxonomy,我有一个名为trailer\u type的自定义分类法,其中包含long和short。当访问myu站点/trailes/short(一个由模板taxonomy-trailer\u type.php提供支持的页面)时,我以如下方式显示分类术语: $terms = get_terms( 'trailer_type' ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) { echo '<ul>'; f

我有一个名为
trailer\u type
的自定义分类法,其中包含
long
short
。当访问
myu站点/trailes/short
(一个由模板
taxonomy-trailer\u type.php提供支持的页面)时,我以如下方式显示分类术语:

$terms = get_terms( 'trailer_type' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    echo '<ul>';
    foreach ( $terms as $term ) {
        echo '<li><a href="' . get_term_link( $term ) . '" title="' . sprintf( __( 'View all post filed under %s', 'my_localization_domain' ), $term->name ) . '">' . $term->name . '</a></li>';
    }
    echo '</ul>';
}
$terms=get_terms('trailer_type');
如果(!empty($terms)&&!is_wp_error($terms)){
回声“
    ”; foreach($terms作为$term){ 回音“
  • ”; } 回声“
”; }

工作正常,但是有没有简单的方法来添加“当前”类?例如,如果我在“long”页面上,我需要“long”才能在此菜单中具有“current”类。

您需要查看查询的对象。有几种方法可以做到这一点,下面是我倾向于使用的:
$wp\u query->queryed\u object
——顾名思义,它返回被查询的对象

在您的情况下,类似这样的方法应该会起作用:

$curTerm =  $wp_query->queried_object;
$terms = get_terms( 'trailer_type' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    echo '<ul>';
    foreach ( $terms as $term ) {
        $classes = array();
        if ($term->name == $curTerm->name)
            $classes[] = 'current';
        echo '<li class="'. implode(' ',$classes) .'"><a href="' . get_term_link( $term ) . '" title="' . sprintf( __( 'View all post filed under %s', 'my_localization_domain' ), $term->name ) . '">' . $term->name . '</a></li>';
    }
    echo '</ul>';
}
$curTerm=$wp\u query->queryed\u对象;
$terms=get_terms('trailer_type');
如果(!empty($terms)&&!is_wp_error($terms)){
回声“
    ”; foreach($terms作为$term){ $classes=array(); 如果($term->name==$curTerm->name) $classes[]=“当前”; echo'
  • ”; } 回声“
”; }

我将这些类设置为数组只是为了将来的扩展。您也可以立即将其设置为字符串。

您需要查看查询的对象。有几种方法可以做到这一点,下面是我倾向于使用的:
$wp\u query->queryed\u object
——顾名思义,它返回被查询的对象

在您的情况下,类似这样的方法应该会起作用:

$curTerm =  $wp_query->queried_object;
$terms = get_terms( 'trailer_type' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    echo '<ul>';
    foreach ( $terms as $term ) {
        $classes = array();
        if ($term->name == $curTerm->name)
            $classes[] = 'current';
        echo '<li class="'. implode(' ',$classes) .'"><a href="' . get_term_link( $term ) . '" title="' . sprintf( __( 'View all post filed under %s', 'my_localization_domain' ), $term->name ) . '">' . $term->name . '</a></li>';
    }
    echo '</ul>';
}
$curTerm=$wp\u query->queryed\u对象;
$terms=get_terms('trailer_type');
如果(!empty($terms)&&!is_wp_error($terms)){
回声“
    ”; foreach($terms作为$term){ $classes=array(); 如果($term->name==$curTerm->name) $classes[]=“当前”; echo'
  • ”; } 回声“
”; }
我将这些类设置为数组只是为了将来的扩展。您也可以立即将其设置为字符串。

尝试使用

get_query_var( 'term' )
检查

if ($term->name == get_query_var( 'term' )){
//make something
}
试用

get_query_var( 'term' )
检查

if ($term->name == get_query_var( 'term' )){
//make something
}

谢谢,但是$wp\u query->queryed\u对象的var\u dump()在术语页面(my\u site/trailes/short/)上不会返回任何内容,只在归档页面(my\u site/trailes/)上返回。我做错什么了吗?@drake035什么东西打破了你的主查询,我几乎可以肯定地说你在某处使用了
query\u posts
,或者你有一个插件使用
query\u posts
$wp\u query->queryed\u object
无法在分类页面上返回任何内容,除非主查询通过
query\u posts
@drake035断开。为了测试以确保此代码有效,可以尝试将上述代码(或您的
var\u dump
)移动到模板文件的顶部,就在
get\u header()
的正下方@pieter是我认为正确的,这可能是一个
query\u posts
或对循环问题的其他修改。将此移到顶部将使其在大多数更改发生之前显示。如果它真的起作用,你知道问题就在那里和你最初的位置之间。如果仍然没有,问题就在标题的某个地方(不太可能)。请不要理会我的愚蠢,我只是把你的代码粘贴到了归档页面上。您的解决方案100%有效,谢谢!谢谢,但是$wp\u query->queryed\u对象的var\u dump()在术语页面(my\u site/trailes/short/)上不会返回任何内容,只在归档页面(my\u site/trailes/)上返回。我做错什么了吗?@drake035什么东西打破了你的主查询,我几乎可以肯定地说你在某处使用了
query\u posts
,或者你有一个插件使用
query\u posts
$wp\u query->queryed\u object
无法在分类页面上返回任何内容,除非主查询通过
query\u posts
@drake035断开。为了测试以确保此代码有效,可以尝试将上述代码(或您的
var\u dump
)移动到模板文件的顶部,就在
get\u header()
的正下方@pieter是我认为正确的,这可能是一个
query\u posts
或对循环问题的其他修改。将此移到顶部将使其在大多数更改发生之前显示。如果它真的起作用,你知道问题就在那里和你最初的位置之间。如果仍然没有,问题就在标题的某个地方(不太可能)。请不要理会我的愚蠢,我只是把你的代码粘贴到了归档页面上。您的解决方案100%有效,谢谢!