自定义帖子类型/两级深度分类(CAT和子猫。)URI问题(错误404)

时间:2015-12-13 作者:Mazgorta

我创建了一个名为“的CPT”;“装饰产品”;(productos decoración),问题与it CPT有关。

当我第一次创建;“装饰产品”;在CPT中,我意识到它需要两级分类uri结构。要直观地说明它,请执行以下操作:

  • Root_domain/CPT name/ - 这是一个显示所有内容的页面;“装饰产品”;CPT的岗位。

  • Root_domain/CPT name/category - 这是一个显示顶级类别帖子的归档页面。

  • Root_domain/CPT name/category/subcategory - 这是一个显示子类别帖子的归档页面。

  • Root_domain/CPT name/category/subcategory/post-title - 这是属于某个顶级类别和子类别的帖子。

    我基于这篇文章:

    wordpress。stackexchange。com/questions/39500/how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types创建两级分类uri结构;“装饰产品”;CPT。无论如何,有一些修复要做,例如,uri中的双斜杠。我用这篇有用的帖子修复了它:

    wordpress。stackexchange。com/questions/75157/how-to-fix-a-double-slash-in-custom-permalinks-with-hierarchy-taxonomys我根据以上两篇文章创建了所有代码,并将其放入函数中。php。你可以在pastebin.

    我想,在我意识到WordPress处理CPT顶级类别和子类别URI的方式存在一些问题之前,一切都很好。这些是问题:

    PROBLEM 1:

    此内部照明柱:

    Root_domain/productos-decoracion/iluminacion/iluminacion-interior/crea-ambientes-interior-acogedores
    
    当我点击本文的面包屑链接“Iluminación interior”时,它必须在以下uri中显示“Iluminación interior”存档页面:

    Root_domain/productos-decoracion/iluminacion/iluminacion-interior
    
    而不是404页未找到(错误404:Página no encontrada)。如果我手动将浏览器的uri更改为:

    Root_domain/productos-decoracion/iluminacion-interior
    
    404页未找到错误消失,一切正常。

    如果我移除\'hierarchical\'=>true 从…起\'rewrite\' 在里面function my_taxonomies_product() (您可以在pastebin function.php代码上方找到)然后单击面包屑链接“Iluminación interior”,它会显示我想要的归档页面,但uri错误:

    Root_domain/productos-decoracion/iluminacion-interior
    
    “引用”;“内部照明”;(iluminación interior)是;“照明”;uri没有显示它,它应该是:Root\\u domain/productos decoracion/iluminacion/iluminacion interior

    所有其他具有顶级类别和子类别的帖子都会出现这种问题。

    PROBLEM 2:

    第二个问题是当我点击许多帖子或分类页面的面包屑链接“Productos decoración”时,比如这里(Root_domain/productos-decoracion/iluminacion/iluminacion-interior/crea-ambientes-interior-acogedores). 它添加了%field% 到uri的末尾。%field% 来自函数。上面包含的php代码。

    我什么都试过了,但没有成功。如果有人能帮我解决这个问题,我将不胜感激。

1 个回复
SO网友:Mazgorta

在经历了许多头痛之后,我花了几天和几个小时寻找解决方案。我已经找到了上述两个问题的解决方案。我希望这对某人有所帮助:

PROBLEM 1:我意识到,当我将Permalink更改为Plain(wordpress admin>settings>Permalink>Plain)时,当我单击面包屑链接“iluminacion interior”时,它工作正常(不再出现404错误页面)。我在“其他人”子类别的“存档”页面中尝试了同样的方法,效果也不错。但我想要“漂亮的永久链接”,我不想要这种url:?producto=crea ambientes interior acogedores,所以我在permarlinks>Custom Structure中重写了“/%category%/%postname%.html”。

所以,问题是服务器不理解“相当永久链接:/%类别%/%postname%.html”,然后当WordPress请求此类url:rootdomain时,服务器在子类别的存档页面中返回404错误。为了解决这个问题,我在函数mmp\\u rewrite\\u rules中添加了$newRules。php,这样服务器就可以理解WordPress请求。这是新函数mmp\\u rewrite\\u ruleshttp://pastebin.com/AMELcM6r我也为其他CPT项目做了同样的工作。

PROBLEM 2:这个问题更容易解决。I替换‘has_archive’ => true, 对于‘has_archive’ => ‘productos-decoracion’, 在里面my_custom_post_product() 作用’productos-decoracion’ 是父存档页的slug。我对proyectos CPT也这样做。

现在,父存档页url将为:…/productos decoracion,不再是/productos decoracion/%字段%。现在,我们必须创建两个文件:“archive producto.php”和“archive portfolio.php”(archive CPT NAME.php),以显示父归档页面的内容。仅此而已。

相关推荐

rewrite rules hierarchical

我希望我的WordPress遵循以下规则:/productes/ 包含所有产品的页面/productes/[category]/ 包含该类别所有产品的分类页面/productes/[category]/[subcategory]/ 包含该类别所有产品(与2相同)的分类页面/[productes]/[category]/[product]/ A.single-productes.php 将显示类别产品/[productes]/[category]/[subcategory]/[product]/ A.sin