Wordpress - 通过 slug 获取标签 ID

Posted

技术标签:

【中文标题】Wordpress - 通过 slug 获取标签 ID【英文标题】:Wordpress - Get tag id by slug 【发布时间】:2017-11-26 06:56:04 【问题描述】:

我正在尝试通过它获取标签的 id\name。

这是我的代码:

$tag = get_term_by('slug', 'hedoms', 'post_tag');
$tag_id =  $tag->term_id;

<h1><?php echo $tag->name;?></h1>

我从这里拿走了它: https://codex.wordpress.org/Function_Reference/get_term_by

我有标签 hedoms&lt;h1&gt; 是空的,它不返回值。我已经尝试了这个函数(get_term_by)的类别 - 和相同的结果。

第二个字段是 slug。

但如果我用 id 而不是 slug 来做,它可以正常工作:

$tag_id = get_term_by('id', 97, 'post_tag');
echo $tag_id->name;

看起来 get_term_by 仅将“id”识别为字段。

我在这里想念什么?它应该在循环中还是什么?

我尝试做的文件是 Woocommerce 的 archive-product.php

【问题讨论】:

把“slug”改成“name”怎么样? @RyanAW 我需要 slug 因为我使用带有标签的 ajax 过滤器,所以在从下拉列表中选择某些内容后,它会使用查询字符串上的 slug 更改页面的 url...这就是为什么我我正在使用蛞蝓。无论如何,“名称”也不适用于我。只有 id。 很抱歉,可以使用rest api吗?喜欢http://yourwebsite/wp/wp-json/wp/v2/tags?slug=hedoms 【参考方案1】:

好的,我找到了解决方案。

我在 get_term_by 上设置了分类“post_tag”而不是“product_tag”,因为它是 woocommerce 标签。下次我在查看分类页面时会仔细查看 wp-admin 的 url:

...wp-admin/edit-tags.php?taxonomy=product_tag&post_type=product

所以代码应该是这样的:

           $tag = get_term_by('slug', $slug, 'product_tag');
           $tag_name = $tag->name;

           <h1><?php echo $tag_name; ?></h1> 

解决了。

【讨论】:

【参考方案2】:
$tag = get_term_by('slug', ' hedoms','post_tag');

$tag_id =  $tag->term_id; 

【讨论】:

谢谢,但是......它与我的代码相同。不工作。 @Oshrib 你有没有在同一个其他文件中尝试过同样的方法! 是的。也在 single.php 上 已尝试使用 wp_query。 $the_query = new WP_Query( array( 'post_type' =&gt; 'Adverts', 'tax_query' =&gt; array( array ( 'taxonomy' =&gt; 'post_tag', 'field' =&gt; 'slug', 'terms' =&gt; 'hedoms', ) ), ) ); 比在循环中你会得到你想要的数据。 IE。 while ( $the_query-&gt;have_posts() ) : $the_query-&gt;the_post(); /*var_dump() data*/ endwhile; wp_reset_postdata();

以上是关于Wordpress - 通过 slug 获取标签 ID的主要内容,如果未能解决你的问题,请参考以下文章

php Wordpress通过slug获取ID

Wordpress - 如何通过 slug 获取自定义帖子类型?

WordPress获取父slug

Wordpress获取类别Slug

PHP Wordpress获取页面slug

Wordpress获取页面slug