如何通过WordPress的functions.php修改页面URL为父子路径形式
你遇到的这个问题是WordPress默认的slug冲突避免机制导致的——当两个页面没有设置父子关系时,直接修改slug试图嵌套路径,系统会自动用连字符合并,而不是生成层级URL。下面是具体的解决步骤:
第一步:确认固定链接设置
先进入WordPress后台的「设置」→「固定链接」,选择「文章名」或者自定义结构(比如/%postname%/)。如果是默认的「朴素」设置(带?page_id的那种),是无法生成层级URL的,这一步是基础。第二步:为子页面设置父级关系
打开pagechild的编辑页面,在右侧的「文档」面板里找到「父项」下拉菜单,直接选择pageparent作为它的父页面。这时候你会发现,子页面的slug会自动保持为pagechild,而URL会自动变成mysite.com/pageparent/pagechild,完全符合你的需求。如果之前已经修改过slug导致合并的情况
如果你之前已经把pagechild的slug改成了pageparent-pagechild,先按照上面的步骤设置好父级关系,然后再把slug改回pagechild,点击更新后,系统就会自动生成正确的层级URL了。额外注意事项
如果设置后URL还是没有变化,记得清理一下WordPress的缓存(如果你使用了缓存插件的话),同时刷新浏览器缓存,重新访问页面就能看到正确的路径了。
需要强调的是,WordPress的页面层级URL是完全依赖页面的父级关系来生成的,不需要额外的插件或者复杂的代码修改,只要设置好父项就能解决这个问题。
内容的提问来源于stack exchange,提问作者Aldo Arriaga

