非唯一术语 slug,或者我可以用来构建特定页面和永久链接的任何其他内容?

Non-unique term slugs, or anything else I can use to build specific pages and permalinks?

我的项目是一个商业列表目录。

个人列表 URL 看起来像 域一样简单。com/five-star-cars - WordPress 开箱即用的东西。

但是我在钻取基于区域的档案时遇到了问题。我们需要一个特定的 URL 结构。例如,如果我们想显示俄亥俄州的所有列表,我们需要 domain.com/ohio - 也很简单。

但是,如果我们想要显示俄亥俄州克利夫兰和内华达州克利夫兰的所有列表 - 我们想要这样做:

所以我创建了一个 CPT "Listings" 和一个自定义分类法 "Location"。我将俄亥俄州和内华达州添加为父项,将克利夫兰作为子项添加到两者。

问题来了:第一个 Cleveland 的鼻涕虫是 domain.com/location/ohio/cleveland/ 但第二个变成了 domain.com/location/nevada/cleveland-nevada/

我发现术语 slugs 必须是唯一的,所以这是个问题 - 我不能使用术语 slugs 来构建 URLs。

我接下来要做的是将州和城市保存为每个列表中的自定义字段值。现在我可以使用这些值(与 term slugs 不同,不必是唯一的)作为全局变量,通过这样的方式:

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:如何使用这些变量构建存档页面和永久链接?

问题 2:如何构建模板以便能够为每种存档类型自定义它们?

或者是否有什么明显的我错过了,我只是在寻找错误的方向? 所以,一般来说:

Q3:有没有更好的方法来解决这个问题?

使用 Rewrite API,您可以使用 post 元构建 URL。

1) 通过 add_rewrite_tag() 添加您的 post 元术语

2) 设置一个add_rewrite_rule('([^/]+)/?','index.php?state=$matches[1]&city=$matches[2]','top');

3) 设置挂钩后刷新重写规则,例如通过保存永久链接设置@ /wp-admin/options-permalink.php

有一篇文章 here

解决 Q3,您可以使用 Cortex,一个 WP 路由系统。

或者,不太优雅的解决方案,为什么不创建两种自定义 post 类型,一种用于城市,一种用于地区,以及一种将城市放在地区页面上的关税?