WordPress的重写没有被拾起

时间:2018-11-07 19:45:02

标签: wordpress url-rewriting

我有一个自定义帖子类型“ 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并拥有我想要的所有值(很好)时,就会被拾取

Monkeyman-rerwite-analyzer output showing me the rules it matches to, precendence and which one it ultimately goes with

..但是当我在浏览器中尝试该请求时,它总是首先尝试匹配其他规则(该规则不起作用,因此得到404):

Debugbar output

有什么作用?我在文档中看到的唯一优先级设置是在定义重写规则时设置了“ top”属性,该操作已经完成(“ bottom”没有任何改变)。重写规则在admin内部起作用,但是永远不会生效,我已经排除了任何与缓存相关的东西。显然,正则表达式确实可以实现我想要的功能,但是当我直接调用该页面时,从来没有实际应用该规则。我无数次刷新了所有永久链接,因此很困惑。

0 个答案:

没有答案