获取自定义 post 类型标签而不是名称 - WordPress + Timber

Get custom post type label instead of name - WordPress + Timber

我在 WordPress 中创建了 3 个自定义 post 类型:dissertationsubject-imposedsubject-free

在每个自定义 post 类型中,用户只能创建一个 post。

我创建了一个由这三种自定义 post 类型组成的菜单,允许同一用户从 post 切换到另一个。

但是我遇到了一个问题。菜单项显示 post 类型的名称而不是标签。

我得到了:论文/主题强加/主题免费

我想要标签(标签是法语):MEMOIRE / SUJET IMPOSE / SUJET LIBRE

我怎样才能得到标签?先感谢您。

在single.php中:

$post_queried = get_queried_object();
$context['post_type_current'] = get_post_type_object(get_post_type($post_queried));

$get_post_current_user = get_posts( array(
    'author' => $current_user->ID,
    'post_type' => array('dissertation', 'subject-imposed', 'subject-free'),
));

$context['list_posts_current_user'] = $get_post_current_user;

在single.twig中:

<ul class="menu-secondary__list">
    {% for item in list_posts_current_user %}
        {% set active = (post_type_current.name == item.post_type) ? 'active' : '' %}
        <li class="menu-secondary__item"><a href="{{ item.guid }}" class="menu-secondary__link h-item {{ active }}">{{ item.post_type }}</a></li>
    {% endfor %}
</ul>

解决这个问题的两个步骤,首先...

转换成Timber\Posts

的数组

$get_post_current_user 是一个 WP_Post 数组,我们需要将它们转换为 Timber\Post 以便与 Timber 的方法进行交互。有很多方法可以做到这一点,但最简单的...

{% for item in Post(list_posts_current_user) %}

访问类型方法:

现在您可以在 Twig 模板中使用 Post::type() 方法并访问标签:

{{ item.type.labels.name }}

{{ item.type }} 属性 将为您提供这里的一切:

https://developer.wordpress.org/reference/functions/get_post_type_object/