我有一个自定义帖子类型“ articles-en”,它具有一个自定义分类法“ articles_locales_en”。此类型的各个帖子具有网址结构:
>>> max(map(int, nums))
我在模板中进行了明确检查,以检查是否为文章分配了%article_locale%。如果是,请渲染页面。如果不是,则显示404。例如,如果我有一个locale = [“ uk”,“ us”]的“ test-article”,则这些链接有效:
def print_playlist(songs):
for song in songs:
title = song['title']
duration = song['duration']
genre = song['genre']
artists = song['artist']
artist_plus = " and ".join( artist for artist in artists)
print(f" {title} by {artist_plus if len(artists) >= 2 else artists[0]}, runtime: {duration}, genre: {genre}")
print_playlist(playlist['songs'])
...但是不会。
%article_locale%/en/article/%slug%
所有这些条款都在CMS内部管理,我的SEO团队很高兴。我很高兴。现在,他们还希望在不执行301重定向的情况下,使用“ us / en / article /%article_name%”名称在URL中不需要前导“ us / en”位的特定情况(因此,它们不会丢失任何SEO果汁),有效地建立了这种链接结构:
uk/en/article/test-article
us/en/article/test-article
...相当于:
ca/en/article/test-article
au/en/article/test-article
(为清楚起见,两者都应该起作用)。我尝试使用add_rewrite_rule()解决此问题,但结果令人困惑。我迷上了init函数的add_rewrite_rule()...
us/en/article/%slug%
...当我在管理员内部使用the monkeyman-rewrite-analyzer plugin并拥有我想要的所有值(很好)时,就会被拾取
..但是当我在浏览器中尝试该请求时,它总是首先尝试匹配其他规则(该规则不起作用,因此得到404):
有什么作用?我在文档中看到的唯一优先级设置是在定义重写规则时设置了“ top”属性,该操作已经完成(“ bottom”没有任何改变)。重写规则在admin内部起作用,但是永远不会生效,我已经排除了任何与缓存相关的东西。显然,正则表达式确实可以实现我想要的功能,但是当我直接调用该页面时,从来没有实际应用该规则。我无数次刷新了所有永久链接,因此很困惑。