在单个自定义帖子类型中显示所选类别(Wordpress)

Posted

技术标签:

【中文标题】在单个自定义帖子类型中显示所选类别(Wordpress)【英文标题】:Showing selected categories in a single of a custom post type (Wordpress) 【发布时间】:2022-01-15 08:01:23 【问题描述】:

我创建了一个名为 members 的自定义帖子类型:

// Custom post types

function members_post_type()

    $args = array(
        'labels' => array(
            'name' => 'Members',
            'singular_name' => 'Member',
            'all_items' => 'All members'
        ),
        // 'hierarchical' => true,
        'public' => true,
        'has_archive' => true,
        'supports' => array('title', 'editor' , 'thumbnail'),
        'menu_icon' => 'dashicons-groups'
    );
    register_post_type('members', $args);


add_action('init', 'members_post_type');

function members_taxonomys()

    $args = array(
        'public' => true,
        'hierarchical' => true
    );
    register_taxonomy('Categories', array('members'), $args);


add_action('init', 'members_taxonomys');
在 single-members.php 我制作了这段代码来调用我的类别:
<?php if(have_posts()):?>
<?php while(have_posts() ): ?>
    <?php 
        the_category(' ');
    ?>

由于某种原因,它不起作用。欢迎提出更多问题或更多细节。

【问题讨论】:

【参考方案1】:
    您好,首先您需要更改自定义分类的名称并为其指定标签:
function members_taxonomys()

    $args = array(
        'label'                 => 'My categories', // Label
        'public' => true,
        //'show_admin_column'     => true,
        'hierarchical' => true
    );
    // Custom category 
    register_taxonomy('my_categories', array('members'), $args);


add_action('init', 'members_taxonomys');

    创建自己的帖子类型时,需要移除重写规则:
function members_post_type()

    $args = array(
        'labels' => array(
            'name' => 'Members',
            'singular_name' => 'Member',
            'all_items' => 'All members'
        ),
        // 'hierarchical' => true,
        'public' => true,
        'query_var'           => true,
        'rewrite'             => true,
        'has_archive' => true,
        'supports' => array('title', 'editor' , 'thumbnail'),
        'menu_icon' => 'dashicons-groups'
    );
    register_post_type('members', $args);

    flush_rewrite_rules(false); // Remove rewrite rules 

    创建一个新成员帖子并将您的自定义分类分配给它

    然后你需要替换the_category();函数,因为它适用于标准类别分类,你需要使用get_the_terms函数

<?php if(have_posts()):?>
<?php while(have_posts() ): the_post(); ?>
    <?php 
       $categories = get_the_terms($post, 'my_categories');
       if(!empty($categories)) 
           ?><ul><?php
                foreach($categories as $cat) 
                    print "<li>$cat->name</li>";
                
           ?></ul><?php           
               
    ?>
<?php endwhile; ?>
<?php endif;?>

【讨论】:

以上是关于在单个自定义帖子类型中显示所选类别(Wordpress)的主要内容,如果未能解决你的问题,请参考以下文章

php 在单个帖子#wordpress上显示自定义类别

url中的wordpress自定义帖子类型类别slug

如何在 wordpress 中显示自定义帖子类别名称列表

自定义帖子类型下的自定义页面

在自定义帖子循环中显示自定义类别

在 Wordpress 中使用自定义帖子类型时无法在循环中过滤类别