Get current term's ID

时间:2011-04-21 作者:Rise

我使用下面的代码获取一系列子分类法,并将它们与无序列表中的链接一起写出。

    <?php
$termID = 10;
$taxonomyName = "products";
$termchildren = get_term_children( $termID, $taxonomyName );

echo \'<ul>\';
foreach ($termchildren as $child) {
    $term = get_term_by( \'id\', $child, $taxonomyName );
    echo \'<li><a href="\' . get_term_link( $term->name, $taxonomyName ) . \'">\' . $term->name . \'</a></li>\';
}
echo \'</ul>\';
?>
我试图实现的是获得实际的术语(类别)id,这样我就可以将其替换为$termID,而不必硬编码术语的id。

任何帮助都将不胜感激!

谢谢

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

下面是我用来列出子项的函数:

/**
 * Lists all subentries of a taxonomy.
 *
 * @return void
 */
function ttt_get_subterms( $args = array () )
{
    if ( ! isset ( get_queried_object()->taxonomy ) )
    {
        return;
    }

    $options = array (
        \'child_of\'           => get_queried_object_id()
    ,   \'echo\'               => 0
    ,   \'taxonomy\'           => get_queried_object()->taxonomy
    ,   \'title_li\'           => FALSE
    ,   \'use_desc_for_title\' => FALSE
    );

    $settings = array_merge( $options, $args );

    $subtermlist = wp_list_categories( $settings );

    // Without results WP creates a dummy item. It doesn\'t contain links.
    ! empty ( $subtermlist ) and FALSE !== strpos( $subtermlist, \'<a \' )
        and print "<ul class=subterms>$subtermlist</ul>";
}
像这样使用它wp_list_categories().

避免get_term_by(). 这是非常昂贵的,没有必要。

SO网友:Bainternet

要获取当前术语,可以使用get_query_var( \'term\' ); 要获得当前的分类法,您可以使用get_query_var( \'taxonomy\' ) 所以你可以这样做:

$term_slug = get_query_var( \'term\' );
$taxonomyName = get_query_var( \'taxonomy\' );
$current_term = get_term_by( \'slug\', $term_slug, $taxonomyName );
$termchildren = get_term_children( $current_term->term_id, $taxonomyName );

echo \'<ul>\';
foreach ($termchildren as $child) {
    $term = get_term_by( \'id\', $child, $taxonomyName );
    echo \'<li><a href="\' . get_term_link( $term->name, $taxonomyName ) . \'">\' . $term->name . \'</a></li>\';
}
echo \'</ul>\';

SO网友:Alex

或者您可以使用:term_exists($术语,$分类法,$父项)

$term_id = term_exists( $term_name );
请参见WordPress Codex

检查给定的术语是否存在,并返回术语ID

如果未指定分类法且术语存在,则返回术语ID。

SO网友:The J

要获取当前术语ID,use:

$term_id = get_queried_object()->term_id;
get_query_var 无法在这种情况下使用,因为term_id 不在list 公开可用的VAR数量。

结束

相关推荐

从管理区域的Taxonomy编辑屏幕中删除“Popular Terms”区域

就我个人而言,我真的不喜欢wordpress在管理区域的分类法添加/编辑屏幕上以不同大小显示所有“流行术语”。有人知道通过向函数中添加代码来完全删除整个区域的方法吗。php文件和/或如何更改此特定区域,使所有流行术语都不会显示不同的字体大小/样式?非常感谢。