显示与每个帖子类型相关的自定义分类

时间:2017-07-17 作者:Hamed

我的网站有3种自定义帖子类型,每种帖子类型都有一个唯一的自定义分类法。

我想在我的单个帖子页面中显示这些分类法,并且只显示与该帖子类型相关的分类法,而不是其他分类法,并且没有类别和标记。

将\\u builtin设置为false可以解决类别和标记的问题,但我不知道如何正确显示这些自定义分类法,我的帖子页面会显示所有帖子类型的所有自定义分类法。

我对php不太了解,试图从多个网站(包括本网站)中找到代码,这是我迄今为止的代码:

// get taxonomies terms links
function custom_taxonomies_terms_links() {
    global $post, $post_id;
    // get post by post id
    $post = &get_post($post->ID);
    // get post type by post
    $post_type = $post->post_type;
    // get post type taxonomies
    $args = array(
        \'public\'   => true,
        \'_builtin\' => false
    ); 

    $output = \'names\'; // or objects
    $operator = \'and\'; // \'and\' or \'or\'
    $taxonomies = get_taxonomies( $args, $output, $operator );

    $out = "<ul>";

    foreach ($taxonomies as $taxonomy) {        
        $out .= "<li>".$taxonomy.": ";
        // get the terms related to post
        $terms = get_the_terms( $post->ID, $taxonomy );

        if ( !empty( $terms ) ) {
            foreach ( $terms as $term )
                $out .= \'<a href="\' .get_term_link($term->slug, $taxonomy) .\'">\'.$term->name.\'</a> \';
        }

        $out .= "</li>";
    }

    $out .= "</ul>";

    return $out;
} 
任何帮助都将不胜感激。tnx公司

1 个回复
最合适的回答,由SO网友:Ankita Tanti 整理而成

尝试以下代码

function custom_taxonomies_terms_links() 
{
    global $post, $postid;

    $custom_taxonomies = get_post_taxonomies( $post );

    if($custom_taxonomies)
    {
        foreach ($custom_taxonomies as $custom_taxonomy) 
        {
              // get post type taxonomies
            $args = array(
                \'public\'   => true,
                \'_builtin\' => false
            ); 
            $args[\'name\']=$custom_taxonomy;

            $output = \'names\'; // or objects
            $operator = \'and\'; // \'and\' or \'or\'
            $taxonomies = get_taxonomies( $args, $output, $operator );

            $out = "<ul>";

            foreach ($taxonomies as $taxonomy) 
            {        
                    $out .= "<li>".$taxonomy.": ";
                    // get the terms related to post
                    $terms = get_the_terms( $post->ID, $taxonomy );

                    if ( !empty( $terms ) ) {
                        foreach ( $terms as $term )
                            $out .= \'<a href="\' .get_term_link($term->slug, $taxonomy) .\'">\'.$term->name.\'</a> \';
                    }

                    $out .= "</li>";
            }

            $out .= "</ul>";

            echo $out;
        }
    }
}
您可以根据需要在上述代码中修改HTML标记的位置。希望这对你有帮助!

结束

相关推荐