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 但<h1>
是空的,它不返回值。我已经尝试了这个函数(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' => 'Adverts', 'tax_query' => array( array ( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => 'hedoms', ) ), ) );
比在循环中你会得到你想要的数据。 IE。 while ( $the_query->have_posts() ) : $the_query->the_post(); /*var_dump() data*/ endwhile; wp_reset_postdata();
以上是关于Wordpress - 通过 slug 获取标签 ID的主要内容,如果未能解决你的问题,请参考以下文章