非唯一术语 slug,或者我可以用来构建特定页面和永久链接的其他任何东西?
Posted
技术标签:
【中文标题】非唯一术语 slug,或者我可以用来构建特定页面和永久链接的其他任何东西?【英文标题】:Non-unique term slugs, or anything else I can use to build specific pages and permalinks? 【发布时间】:2016-08-09 07:34:12 【问题描述】:我的项目是一个企业列表目录。
个人列表 URL 看起来就像 domain.com/five-star-cars 一样简单 - WordPress 开箱即用地处理。
但是我在钻取基于区域的档案时遇到了问题。我们需要一个特定的 URL 结构。例如,如果我们想显示俄亥俄州的所有列表,我们需要 domain.com/ohio - 也很简单。
但是,如果我们想显示俄亥俄州克利夫兰和内华达州克利夫兰的所有房源 - 我们希望这样做:
domain.com/cleveland/oh domain.com/cleveland/nd所以我创建了一个 CPT“列表”和一个自定义分类“位置”。我将俄亥俄州和内华达州添加为父项,并将克利夫兰添加为两者的子项。
这是问题所在:第一个克利夫兰的蛞蝓是 domain.com/location/ohio/cleveland/ 但第二个变成了 domain.com/location/nevada/cleveland-nevada /
我发现术语 slug 必须是唯一的,所以这是个问题 - 我不能使用术语 slug 来构建 URL。
接下来我将州和城市保存为每个列表中的自定义字段值。现在我可以通过以下方式使用这些值(与术语 slug 不同,不必是唯一的)作为全局变量:
function loc_global_vars()
global $wp_query;
$postid = $wp_query->post->ID;
global $loc_vars;
$loc_vars = array(
'state' => get_post_meta($postid, 'state', true),
'city' => get_post_meta($postid, 'city', true),
);
add_action( 'parse_query', 'loc_global_vars' );
但现在我陷入了困境:我的下一步是什么?
Q1:如何使用这些变量构建存档页面和永久链接?
Q2:如何构建模板以便能够针对每种归档类型自定义它们?
或者有什么明显的我错过了,我只是在寻找错误的方向? 所以,一般来说:
Q3:有没有更好的方法来解决这个问题?
【问题讨论】:
【参考方案1】:使用Rewrite API,您可以使用您的帖子元构建网址。
1) 通过add_rewrite_tag()
添加您的帖子元术语
2) 设置add_rewrite_rule('([^/]+)/?','index.php?state=$matches[1]&city=$matches[2]','top');
3) 设置挂钩后刷新重写规则,例如通过保存永久链接设置@/wp-admin/options-permalink.php
。
有一篇文章here。
解决 Q3,您可以使用 WP 路由系统 Cortex。
或者,不太优雅的解决方案,为什么不创建两种自定义帖子类型,一种用于城市,一种用于地区,以及将城市放在地区页面上的自定义税?
【讨论】:
州页面上不会有城市,只有整个州的列表和顶部的州特定描述,例如familydaysout.com/kids-things-to-do-usa/ohio @spnzr 你应该用例子来阐明你的答案。因为对于尚未弄清楚其工作原理的其他人来说,参考通常很难遵循。以上是关于非唯一术语 slug,或者我可以用来构建特定页面和永久链接的其他任何东西?的主要内容,如果未能解决你的问题,请参考以下文章
拥有一个与自定义帖子类型“front”slug 标题相同的 WordPress 页面