如何获取当前页面的分类术语并在模板中填充查询


16

我一直在努力寻找如何获取当前页面的特定分类术语的方法,以便随后可以在页面上查询具有相同术语的其他帖子类型。

基本上:

  • 第1页有分类术语-教育政策
  • page.php有四个部分:
    1. 输出页面的标准循环,但随后具有三个后续查询
    2. 循环查找具有分类学术语的事件-教育政策
    3. 循环查找具有分类术语的报告-教育政策
    4. 有分类学术语的人的循环-教育政策

我做了页面特定的模板,在这里我可以将术语硬编码到额外的循环中,但是我需要弄清楚如何动态地进行操作(原本应该是四,五页的现在是四十或五十)。

我发现了一些类似的问题,但没有一个真正可以实现的方式。

获取当前页面的分类法 ,就实际要求而言,这有点令人困惑。

在自定义single-post-type.php模板页面上获取属于自定义分类法的术语ID

我希望这是有道理的,非常感谢。

Answers:


25

嗯,如果您为“页面”对象类型正确注册了一个分类法,然后将该分类法的术语分配给了一个页面……我相信您可以通过以下方式访问该分类法和术语条:

get_query_var( 'taxonomy' )
get_query_var( 'term' )

如果你 print_r($wp_query)将在生成显示的当前页面时看到所有存在的参数。使用上面的代码,您可以从访问这些参数$wp_query

然后,要获取具有完整信息的term对象,可以使用get_term_by函数,如下所示

$term = get_term_by( 'slug', get_query_var('term'), get_query_var('taxonomy') );
echo $term->name;

这将打印该术语的“好”名称。

我相信,如果您使用get_query_var('term')$term->slug(在获得术语对象之后),则可以在所有其他查询中使用该段。

希望能有所帮助。我从未对页面使用分类法。让我知道你是怎么办的。


2

只需复制粘贴下面的代码

这将打印您当前的页面分类名称和描述(可选)

<?php 
   $tax = $wp_query->get_queried_object();
   echo ''. $tax->name . '';
   echo "<br>";
   echo ''. $tax->description .''; 
?>

-2

可能是您需要启用搜索才能启用分页

在声明自定义分类法时,您应该禁用搜索排除。

exclude_from_search =>否

这解决了我的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.