过滤自定义帖子类型时获取分类描述

Posted

技术标签:

【中文标题】过滤自定义帖子类型时获取分类描述【英文标题】:Get taxonomy description when filtering custom post type 【发布时间】:2022-01-19 22:46:31 【问题描述】:

我正在使用自定义帖子类型,并且正在使用类别进行过滤。 每个类别都有描述,我想在选择类别时显示该类别的描述like here

我找到了一种显示分类法描述的方法from here

使用的 HTML:

<div class="col-lg-9">
                <div class="lista-portofoliu">
                    <div class="row">
                        
                        <?php while ($pquery->have_posts()) : $pquery->the_post();
                            $term_obj_list = get_the_terms(get_the_id(), 'portfolio_category');
                            $term_classes_a = array();
                            $img_data = array();
                            $img_string = ""; ?>
                            <?php foreach ($term_obj_list as $term) 

                                $term_classes_a[] = $term->slug;
                                $meniu_triggers[] = $term->slug;
                                $meniu_labels[] = $term->name;

                                $img_key = 'imagine_' . $term->slug;
                                $img_src = wp_get_attachment_image_src(get_field($img_key, get_the_id()), 'thumbnail');

                                if ($img_src) 
                                    $img_data[] = 'data-' . $img_key . '="' . $img_src[0] . '"';
                                 else 
                                    $img_data[] = 'data-' . $img_key . '="' . wp_get_attachment_image_src(get_field($img_key, get_the_id()), 'full') . '"';
                                                                    
                                foreach ($img_data as $imagine) :
                                    $img_string .= $imagine;

                                endforeach;;
                             ?>

                            <?php $term_classes = implode(" ", $term_classes_a);  ?>

                            <div class="col-lg-4 p-1 m-0 item toate <?php echo $term_classes; ?>">
                                <div class=" item-content" <?php echo $img_string; ?> data-imagine_toate="<?php echo get_the_post_thumbnail_url(get_the_id(), 'thumbnail', true); ?>" style="background-image:url('<?php echo get_the_post_thumbnail_url(get_the_id(), 'thumbnail', true); ?>')">
                                    <a href="<?php the_permalink(); ?>" class=" item-overlay">
                                        <span class="item-title">
                                            <?php the_title(); ?>
                                            <br>
                                            <br>
                                        </span>
                                    </a>
                                </div>
                            </div>
                        <?php endwhile;
                        ?>
                        
                        <?php
                        wp_reset_postdata(); ?>
                        
                    </div>
                    <button type="button" id="more_posts" class="btn btn-dark loadMore center-block btn-pachete">Mai mult</button>
                </div>
            </div>

谢谢!

【问题讨论】:

您的问题不完整。什么不起作用,是什么阻止您实施研究? 每次我使用过滤器(类别)时,我希望第一个框(显示自定义帖子的位置)显示类别的描述(用 wordpress 编写) 好的。我让你参与了第一部分。是什么阻止你这样做?您已经找到了如何输出描述,但您是否尝试过实现它? 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

如果您想按投资组合类别对所有内容进行排序,则应首先遍历 portfolio_category 分类中的每个术语。

对于每个术语,创建一个新查询,在其中使用 tax_query 仅获取与我们正在循环的当前术语相关的帖子。

结果将是每个循环都包含类别数据和与该类别相关的帖子。

您可以通过回显$term-&gt;description 值来输出类别描述。

<?php
$terms = get_terms('portfolio_category');
if (!is_wp_error($terms)) :
  foreach ($terms as $term) : ?>

    <div class="row">

    <?php
    $args = [
      'post_type' => 'YOUR_CUSTOM_POST_TYPE',
      'post_status' => 'publish',
      'posts_per_page' => -1,
      'tax_query' => [
        [
          'taxonomy' => 'portfolio_category',
          'field' => 'term_id',
          'terms' => $term->term_id
        ]
      ]
    ];

    $query = new WP_Query($args);

    if ($query->have_posts()) : ?>
      
      <div class="col-lg-4">
        <?= $term->name; ?>
        <?= $term->description; ?>
      </div>

      <?php
      while ($query->have_posts()) :
        $query->the_post(); ?>

        <div class="col-lg-4">
          <?php the_title(); ?>
        </div>

      <?php
      endwhile
      wp_reset_postdata();
    endif; ?>

    </div>

  <?php
  endforeach;
endif;

【讨论】:

嗨,我已经尝试了代码。因此,据我了解,这显示了所有类别的描述。我需要的是,只有当我选择某个类别(过滤器)时,才能仅显示所选类别的描述以及具有该属性的项目(帖子)。 (我对提问有点陌生,请与我交谈) 啊,我明白了。好吧,同样的事情也适用于这段代码 sn-p,但我们不会循环遍历 所有 个术语,而是应用一个术语或一组术语来显示描述和帖子。不幸的是,我没有过滤值的示例。你能提供吗?但是,当前的答案是否接近您的问题的意思。你是新手,这完全没问题。继续。 :) 你好,会尽快申请,假期没时间,谢谢,新年快乐!

以上是关于过滤自定义帖子类型时获取分类描述的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 自定义帖子类型分类 - 获取特定内容

如何获取在 Wordpress 中按类别过滤的自定义帖子类型的永久链接?

使用 Ajax 的带有自定义分类法的 Wordpress 多个自定义帖子类型过滤器 - 所有新创建的帖子都不会在响应中显示

未找到具有自定义分页 404 的自定义分类和自定义帖子类型

Wordpress - 如何通过其分类过滤添加的自定义帖子?

如何获取自定义帖子类型的分类值