web-dev-qa-db-fra.com

Comment changer la structure de permalien pour le type de message personnalisé et ses taxonomies?

Ceci est une réponse d'une précédente question que j'avais, mais j'aime entrer dans plus de détails maintenant pour pouvoir résoudre complètement ceci.}

Encore une fois, avec les publications (normales), changer le permalien est aussi simple que d'aller dans Réglages> Permalien et de le changer pour tout ce que vous aimez, tel que le %category%/%postname%.html, largement utilisé. Tout cela fonctionne. Si seulement c'était aussi facile pour le type de message personnalisé et ses taxonomies.

C'est donc ce que j'aime accomplir.

  1. http://mywordpress.com/portfolio.html - Affiche tous les articles de toutes les catégories.
  2. http://mywordpress.com/portfolio/music/ - Affiche tous les messages de cette catégorie.
  3. http://mywordpress.com/portfolio/music/trance/ - Affiche tous les messages de cette catégorie (enfant).
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - Afficher le message.

Ce que j'ai obtenu jusqu'à présent est le suivant:

  1. J'ai d'abord créé un custom_post_type nommé project et une taxonomy project_category .
  2. J'ai créé un portfolio de page et lui ai donné un modèle de page qui répertoriera tous les articles de post_type = project. Comment puis-je ajouter. Html au permalien des pages? Il contient maintenant un lien vers http://mywordpress.com/portfolio tant que je veux http://mywordpress.com/portfolio.html . Cela devrait résoudre le premier problème.
  3. La situation deviendra alors difficile, car nous ne savons pas d'avance combien de sous-catégories sont présentes, il n'y en a peut-être même aucune. Donc, la structure que nous recherchons est portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html. Je suis toujours bloqué à ce stade. Je pense que je devrais en quelque sorte obtenir la dernière catégorie ajoutée au chemin et transmettre celle-ci le long du project_category , ce qui devrait conduire à un fichier taxonomy.php où je peux le traiter correctement.
  4. Je n'ai pas abordé cela non plus, mais cela devrait avoir quelque chose à voir avec %postname%.html à la fin de quelque chose.

J'espère que mon problème est clair et qu'il existe des développeurs courageux qui m'aideront à résoudre ce problème qui m'occupe déjà depuis quatre jours!

9
Mark

Ok je pense que je pourrais avoir une solution. Je ne sais pas du tout si c'est la bonne façon de procéder, mais pour l'instant, c'est la seule chose qui semble fonctionner.

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}
4
Mark

Après avoir frappé ma tête pendant des heures, j'ai trouvé ce plugin très utile.

https://wordpress.org/plugins/custom-post-type-permalinks/

Vous trouverez ci-dessous la capture d'écran des options proposées.

 enter image description here 

1
Mohd. Umar

2 méthodes différentes:

* Voir les notes au bas de cet article.


Par exemple, vous voulez avoir une telle structure permalien:
/MAIN_CATEGORY/SUB_CAT_2/Another_SUBCAT/my-post

Au début , vous devrez peut-être définir des liens permanents sur /% catégorie% /% postname% . Ensuite...




MÉTHODE 1:

créer des catégories STANDARD (MAIN_CATEGORY, SUB_CAT_1, and etc..) et enregistrer le POST PERSONNALISÉ, y compris le paramètre suivant:

'taxonomies'    => array('category'..)

et utilisez ces codes pour modifier les liens permanents: https://wordpress.stackexchange.com/a/195643/33667
Ensuite, après la publication d'un CUSTOM POST (s'il est associé à une catégorie), l'URL sera:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



MÉTHODE 2:

(p.s. cette méthode n'est pas conseillée si vous prévoyez de publier des centaines ou des milliers de messages)

enregistrez le CUSTOM POST (nomméMAIN_CATEGORY), y compris les paramètres suivants:

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

puis, publiez des publications personnalisées comme ceci:   
(c.-à-d. publier plusieurs posts nommés SUB_CAT_2, SUB_CAT_1... Après, lorsque vous publiez un autre message, choisissez plutôt SUB_CAT_2 en tant que parent.





p.s.
1) Si vous êtes débutant, vérifiez: Enregistrez CUSTOM POST et Enregistrement de CUSTOM POST avec TAXONOMY
2) si vous avez besoin de la fonctionnalité de recherche pour les sous-niveaux, utilisez/ requête de recherche personnalisée

0
T.Todua