【问题标题】:Display WordPress categories for Custom Post Types (specifically for that post) in the loop在循环中显示自定义帖子类型(专门针对该帖子)的 WordPress 类别
【发布时间】:2017-07-29 13:44:26
【问题描述】:

我正在使用 Javascript 过滤器,它根据类别显示和隐藏自定义帖子类型的列表(循环)。

我正在尝试将类别 slug 添加为一个类。但我只想显示分配给特定循环项目的类别。每个项目可以有多个类别。

我已经这样做了,但是它会转储每个循环中的所有类别,而不是专门针对该循环项的类别。

<?php
    $pageID = get_the_ID();
    $loop = new WP_Query(array('post_type' => 'casestudies', 'posts_per_page' => -1));
    $taxonomy = 'custom_casestudies';
    $terms = get_terms($taxonomy);
    while ($loop->have_posts()) : $loop->the_post();
?>

<div class="block-wrap mix <?php foreach ($terms as $term) echo  ' ' . $term->slug; ?>">
    // loop content
</div>

<?php endwhile; wp_reset_postdata(); ?>

【问题讨论】:

    标签: php wordpress loops custom-post-type


    【解决方案1】:

    get_terms 返回给定分类中的所有术语。在这种情况下,您应该使用 wp_get_post_terms,它返回给定帖子的术语列表。 documentation 更详细。

    【讨论】:

    • 我试过了,即使是$terms = wp_get_post_terms($pageID, 'custom_casestudies');,但没有显示任何内容。文档中提到了$post-ID,但我从哪里获得该 ID?
    • 我也试过$terms = wp_get_post_terms($loop-&gt;id, 'custom_casestudies'); 也不起作用。
    • 尝试在您的 WP_Query 之前添加global $post;。这应该允许您访问$post-&gt;ID
    • 感谢您的帮助。但是,我仍然没有更进一步。我现在可以看到 $post-&gt;ID 并更新到 $terms = wp_get_post_terms($post-&gt;ID, 'custom_casestudies'); 但仍然没有显示任何内容。
    • wp_get_post_terms 返回什么?
    【解决方案2】:

    如果这对其他人有帮助,感谢马特(谁回答)这是有效的。

    <?php
        global $post;
        $loop = new WP_Query(array('post_type' => 'casestudies', 'posts_per_page' => -1));
        while ($loop->have_posts()) : $loop->the_post();
        $terms = wp_get_post_terms($post->ID, 'custom_casestudies');
    ?>
    <div class="block-wrap mix<?php foreach ($terms as $term) echo  ' ' . $term->slug ?>">
        // content
    </div>
    
    <?php endwhile; wp_reset_postdata(); ?>
    

    这些术语位于while 循环之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-17
      • 2014-10-03
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多