get term archive url / link

时间:2012-04-09 作者:e382df99a7950919789725ceeec126

我创建了自定义帖子类型;自定义分类法。

示例:actors (分类法)用于movies (岗位类型)。

现在我想在我的小部件中显示一些术语和more 的链接actors 术语存档。

如何获取分类法存档链接/url?

6 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

使用get_term_link

e、 g.打印与档案相关的演员术语列表:

$terms = get_terms(\'actors\');
echo \'<ul>\';
foreach ($terms as $term) {
    echo \'<li><a href="\'.get_term_link($term).\'">\'.$term->name.\'</a></li>\';
}
echo \'</ul>\';
然而!

如果您真正的意思是与自定义帖子类型归档文件等效,它列出了该类型的所有帖子,但对于分类术语,例如作为归档文件的页面列出了各种可用的分类术语,那么您就不走运了。WordPress中没有术语的分类档案,只有分配给给定术语的帖子。

要生成一个列出分类术语的页面,可以使用与上面类似的代码。然后将其放入页面模板中,并将该页面用作分类术语存档。

原因是问题在于post循环,几乎每个页面模板都有一个,如果查看模板继承权,如果找不到必要的模板,则会返回到索引。php和索引。php有一个显示帖子的帖子循环,而不是一个术语循环。这一点以及如何列出术语的许多不同方式和想法意味着没有达成共识。日期档案呢?是否应该有一个列出月份和年份的存档?时间表?面板、瓷砖、云等

SO网友:pixelbacon

没有简单的方法可以从冲刷中获得这一点。每个在任何地方回答问题的人都认为你想链接到分类法中的一个术语。。。当您正在查找分类法存档的链接时。。。对此我什么也没发现。

基本上,像许多人一样,你想要get_taxonomy_archive_link 方法

除非,出于这样或那样的原因,它根本不存在。我认为这是Wordpress方面的一个重大失败。

你的问题没有答案。并不是一个在WP框架内作为适当解决方案实际工作的解决方案。当然,你可以拼凑起来get_bloginfo() 为了满足您的需求,但WP中绝对没有逻辑上的原因get_taxonomy_archive_link 不存在。

综上所述,我总是在我的主题中添加以下功能:

/**
 * Pass in a taxonomy value that is supported by WP\'s `get_taxonomy`
 * and you will get back the url to the archive view.
 * @param $taxonomy string|int
 * @return string
 */
function get_taxonomy_archive_link( $taxonomy ) {
  $tax = get_taxonomy( $taxonomy ) ;
  return get_bloginfo( \'url\' ) . \'/\' . $tax->rewrite[\'slug\'];
}

SO网友:AndPicc

您似乎在请求一个指向存档的链接,其中包含“所有具有分类法参与者的任何术语的帖子”。这里的每个人都回答说,好像你要求提供一个特定术语档案的链接,因为你所要求的在wordpress世界中没有意义。

我对pixelbacon的答案感到惊讶,它有6张赞成票。。。该函数返回一个不指向任何地方的url。。。wordpress无法解释该url,也无法进行必须在该请求背后进行的查询。

在数据库中,分类法与术语相关,术语与帖子相关。单个帖子与分类法没有关系。将它们联系起来的唯一一点是,post类型可以支持分类法。

让我们用文字写下您试图在该页面中显示的内容:“显示post\\u类型‘post’的所有帖子,它包含来自分类法参与者的任何术语。”

这基本上可以转化为:“显示所有post\\u类型‘post’(支持分类法参与者)的帖子”。

因此,与常规post\\u类型存档(显示给定post\\u类型中的所有帖子)的唯一区别是,如果您的帖子没有指定任何参与者术语,并且确实要将其排除在外。

如果是这种情况,那么您可以创建一个自定义页面,对所有帖子进行一般查询,然后在循环中检查帖子是否有任何参与者术语wp_get_post_terms(get_the_ID(), \'actors\'), 如果没有,最终将其排除在外。

SO网友:EAMann

任何分类法的存档链接都遵循以下模式:

http://{siteurl}/{taxonomy}/{term}
例如,“myblogsite.com”上的类别“news”将具有以下存档URL:

http://myblogsite.com/category/news
所以你的actors 分类法应为:

http://myblogsite.com/actors/harrison-ford

SO网友:moraleida

使用get_term_link() :)

EDIT:

这可能有用:分类法的存档链接:get_the_term_list(). 抄本:

返回与帖子和给定分类法关联的分类法术语的HTML字符串。术语链接到各自的术语列表页面。

因此,它需要链接到一个post ID,但需要归档分类术语。

SO网友:Eugene Manuilov

创建自定义分类法时,可以添加属性rewrite 对它。此属性可以为您的分类法设置重写slug,您可以将其用于链接:

register_taxonomy(\'actors\', \'movies\', array(
    // ...
    \'rewrite\' => array( \'slug\' => \'actors\' ),
    // ...
));
因此,要创建链接以创建分类法归档链接,可以使用以下模式:

http://mysite.com/actors/actor-name

结束

相关推荐

显示Archives.php中的所有自定义帖子类型

我该怎么做?archive.php 只有以下内容:wp_get_archives(\'type=monthly\'); 以及wp_get_archives() 没有显示所有帖子类型的参数。我也认为archive-[post_type].php 不是我要找的,因为我希望所有帖子类型都显示在一个归档页面中。谢谢W