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.
Ce que j'ai obtenu jusqu'à présent est le suivant:
custom_post_type
nommé project et une taxonomy
project_category .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.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.%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!
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;
}
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.
* 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...
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
(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