获取分类名称

Get taxonomy name

我正在尝试使用自定义分类法修改具有自定义 post 的主题。在 posts 的底部,它显示了其他 posts 的列表(如“您可能还喜欢...”)我想做的是过滤 posts 显示在该区域中,因此它们与当前 post 的类别相匹配。这是一家旅游公司,我想展示同一地区的旅游。

自定义 posts 有一个名为“st_tour_type”的 term/taxonomy(我还是不明白)我怎样才能得到当前 post 那么我可以使用那个作为参考过滤页面底部显示的那些吗?

目前,如果为“st_tour_type”输入 slug/name,我可以手动过滤它们,但这没有意义

$args = [                    
   'posts_per_page' => 4,
   'post_type' => 'st_tours',
   'st_tour_type' => 'lerwanda',
]; 

我希望你得到我需要的东西,这是我第一次使用分类法...

更新(11 月 23 日): 这里有更多的原始代码

$search_tax_advance = st()->get_option( 'attribute_search_form_tour', 'st_tour_type' );
$terms_posts = wp_get_post_terms(get_the_ID(),$search_tax_advance);
$arr_id_term_post = array();
foreach($terms_posts as $term_post){
   $arr_id_term_post[] = $term_post->term_id;
}        
$args = [                    
   'posts_per_page' => 4,
   'post_type' => 'st_tours',
   'post_author' => get_post_field('post_author', get_the_ID()),  
   'post__not_in' => [$post_id],
   'orderby' => 'rand',
   'tax_query' => array(
      'taxonomy' => $search_tax_advance,
      'terms' => $arr_id_term_post,
      'field' => 'term_id',
      'operator' => 'IN'
    ),
];

我不完全理解你的问题,所以我不确定这是否是你所期望的,但试试这个。您需要使用函数 get_the_terms 获取当前 post 的任期。以下是您应该如何做:

<?php 

global $post

$taxonomy = 'your_custom_taxonomy_slug';
$term = get_the_terms( $post->ID, $taxonomy ); 

上面的函数将 return 一个对象,其中包含有关您 post 当前任期的所有信息,如下所示:

<?php
 
Array
(
    [0] => WP_Term Object
        (
            [term_id] => 1
            [name] => Term Title
            [slug] => term-title
            [term_group] => 0
            [term_taxonomy_id] => 1
            [taxonomy] =>  custom_taxonomy
            [description] => 
            [parent] => 0
            [count] => 2
            [filter] => raw
        )

)

现在根据你的问题,我猜你正在尝试进行查询以获取同一术语中的所有相关 post。所以 $args 应该改为:

<?php

$args = array(
    'posts_per_page' => 4,
    'post_type' => 'st_tours',
    'tax_query' => array(
         'taxonomy'     =>      $taxonomy,
         'field'        =>      'id',
         'terms'        =>      array( $term->term_id ),
         'operator'     =>      'IN',
    ),
);

有关 Wp 查询中的分类参数,请参阅 WP Docs

哦,我发现你对那些 terms/taxonomies 有点困惑,你可以这样理解它: Post 中的类别是分类法,你创建的所有类别 - 每个其中是一个术语。对于自定义 post 类型(在您的例子中是 Tour post 类型),假设您创建了一个名为“国家/地区”的自定义分类法,然后添加了一些国家/地区:美国、加拿大、日本。所以现在每个国家都是一个术语。