将CPT类别列表显示为短码

时间:2021-01-11 作者:Danny Tonkin

我正在尝试将我的“公文包”自定义帖子类型的当前帖子类别作为快捷码输出。

目前我在函数中有这个片段。php

    function shows_cats(){
    $page_id = get_queried_object_id();
    echo \'<h6>Categories</h6>\';
    echo get_the_category_list(\'\',\'\',$page_id);
   }
   add_shortcode(\'showscats\',\'shows_cats\');
我尝试了几种不同的组合来称呼CPT,但没有成功。我意识到这段代码只是输出标准WP类别,但我想知道是否有人知道如何编辑它以显示CTP。

非常感谢你的帮助

2 个回复
SO网友:rudtek

您可以尝试以下方式:

// Get the taxonomy\'s terms
$terms = get_terms(
    array(
        \'taxonomy\'   => \'your-taxonomy\',
        \'hide_empty\' => false,
    )
);

// Check if any term exists
if ( ! empty( $terms ) && is_array( $terms ) ) {
    // Run a loop and print them all
    foreach ( $terms as $term ) { ?>
        <a href="<?php echo esc_url( get_term_link( $term ) ) ?>">
            <?php echo $term->name; ?>
        </a><?php
    }
} 

SO网友:Danny Tonkin

谢谢你的回复。

我对此进行了另一次研究,得到了一些可以作为短代码使用但并不完美的东西。在我的函数中添加了以下内容。php文件,并使用[showscats]作为我在WPBakery中的短代码,它将当前自定义的帖子类型分类作为列表输出。我的CPT分类法是;项目类型;。

唯一的问题是,它显示了属于CPT的所有类别,而不是应用于当前职位的类别。

// First we create a function
    function shows_cats( $atts ) {

// Inside the function we extract custom taxonomy parameter of our shortcode
 
    extract( shortcode_atts( array(
        \'custom_taxonomy\' => \'project-type\',
    ), $atts ) );
 
// arguments for function wp_list_categories
    $args = array( 
    taxonomy => $custom_taxonomy,
    title_li => \'\'
    );
// We wrap it in unordered list 
    echo \'<ul class="portfolio-cats">\'; 
    echo wp_list_categories($args);
    echo \'</ul>\';
    }
// Add a shortcode that executes our function
    add_shortcode( \'showscats\', \'shows_cats\' );