web-dev-qa-db-fra.com

Type de message personnalisé/Taxonomie profonde à deux niveaux (cat. Et sous-cat.) Problème uri (erreur 404)

J'ai créé un CPT nommé "produits de décoration" (productos decoración), le problème le concerne.

Lorsque, pour la première fois, j'ai créé des "produits de décoration" CPT, je me suis rendu compte qu'il fallait une structure de taxonomie uri à deux niveaux. Pour l'illustrer visuellement:

  • Root_domain/CPT name/ - Ceci est une page qui affiche tous les messages de "produits de décoration" du CPT.

  • Root_domain/CPT name/category - Ceci est une page d'archive qui affiche les messages de la catégorie de niveau supérieur.

  • Root_domain/CPT name/category/subcategory - Ceci est une page d'archive qui affiche les messages de la sous-catégorie.

  • Root_domain/CPT name/category/subcategory/post-title - Ceci est un article dans une certaine catégorie supérieure et sous-catégorie.

J'ai basé sur ce post:

  • wordpress.stackexchange.com/questions/39500/how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types

créer une structure de taxonomie uri à deux niveaux pour les "produits de décoration" CPT. Quoi qu'il en soit, il y avait quelques corrections à faire, par exemple, une double barre oblique dans l'URI. Je l'ai corrigé avec ce post utile:

  • wordpress.stackexchange.com/questions/75157/how-to-fix-a-double-slash-in-custom-permalinks-with-hierarchical-taxonomys

Je crée tout mon code basé sur les deux articles ci-dessus et le mets dans functions.php. Vous pouvez le voir dans Pastebin .

J’ai pensé que tout fonctionnait bien jusqu’à ce que j’ai réalisé qu’il y avait quelques problèmes avec la manière dont WordPress traite les URI de catégories supérieures et de catégories enfants CPT. Ce sont les problèmes:

PROBLÈME 1:

Le poste de cette illumination intérieure:

Root_domain/productos-decoracion/iluminacion/iluminacion-interior/crea-ambientes-interior-acogedores

Lorsque je clique sur le fil d'Ariane "Iluminación interior" de ce message, il doit afficher la page d'archive "Iluminación interior", dans l'URI suivant:

Root_domain/productos-decoracion/iluminacion/iluminacion-interior

Au lieu de 404 page non trouvée (erreur 404: Page non encontra). Si je change manuellement l'URI du navigateur en:

Root_domain/productos-decoracion/iluminacion-interior

404 Erreur de page non trouvée disparaît et tout fonctionne bien.

Si je supprime 'hierarchical'=>true de 'rewrite' dans function my_taxonomies_product() (vous pouvez le trouver au-dessus du code function.php de Pastebin) et que je clique sur le lien fil d'Ariane "Iluminación interior", il affiche la page d'archive comme je le veux mais dans le mauvais uri:

Root_domain/productos-decoracion/iluminacion-interior

"Illumination intérieure" (iluminación interior) est une sous-catégorie de "Illumination" et l’Uri ne le montre pas, il devrait être: Root_domain/productos-decoracion/iluminacion/iluminacion-interior

Ce problème se produit avec tous les autres postes qui ont une catégorie supérieure et une sous-catégorie.

PROBLÈME 2:

Le deuxième problème survient lorsque je clique sur le lien de la barre de navigation "Productos decoración" de nombreuses pages de messages ou de catégories, par exemple ici (Root_domain/productos-decoracion/iluminacion/iluminacion-interior/crea-ambientes-interior-acogedores). Au lieu d’apporter à Root_domain/productos-decoracion (c’est ce que je veux), il ajoute %field% à la fin de l’URI. %field% provient du code functions.php inclus ci-dessus.

J'ai tout essayé mais sans succès. J'apprécierais vraiment toute aide pour résoudre ce problème.

1
Mazgorta

Après de nombreux maux de tête, j'ai passé des jours et des heures à trouver une solution. J'ai trouvé une solution pour deux problèmes commentés ci-dessus. J'espère que ça aide à quelqu'un:

PROBLÈME 1 : Je me suis rendu compte que lorsque je changeais Permalink en Plain (admin wordpress> settings> Permalink> Plain) et que je cliquais dans le lien miettes de pain "iluminacion interior" cela fonctionnait bien (non plus 404 page d'erreur). J'ai essayé la même chose dans la page d'archive d'autres sous-catégories et cela fonctionne bien aussi. Mais je veux "jolis liens permaratifs" Je ne veux pas de ce type d'URL: ../?producto=crea-ambientes-interior-acogedores, j'ai donc réécrit "/%category%/%postname%.html" dans permarlinks > Structure personnalisée.

Donc le problème était que les serveurs ne comprenaient pas "de jolis permaliens: /%category%/%postname%.html", puis les serveurs retournent une erreur 404 dans la page des archives de la sous-catégorie lorsque WordPress demande ce type d'URL: rootdomain.es/productos-decoracion/iluminacion/iluminacion-interior Pour résoudre le problème, j'ai ajouté $ newRules dans la fonction mmp_rewrite_rules dans function.php, afin que les serveurs puissent comprendre les requêtes WordPress. C'est la nouvelle fonction mmp_rewrite_rules http://Pastebin.com/AMELcM6r J'ai fait la même chose pour les autres projets CPT.

PROBLÈME 2 : Ce problème était plus facile à résoudre. Je remplace ‘has_archive’ => true, par ‘has_archive’ => ‘productos-decoracion’, dans la fonction my_custom_post_product(). ’productos-decoracion’ est le slug de la page d'archive parent. Je fais la même chose avec proyectos CPT.

Maintenant, l’URL de la page d’archive parent sera:…/productos-decoracion, no more .../productos-decoracion /% field%. Maintenant, nous devons créer deux fichiers nommés: “archive-producto.php” et “archive-portfolio.php” (archive-CPT NAME.php) pour afficher le contenu des pages d'archives parent. C'est tout.

1
Mazgorta