J'utilise la structure permalien "/% category% /% postname% /".
Ce qui me dérange, c'est que j'ai des messages qui appartiennent à deux catégories. Et bien sûr, malheureusement, Wordpress choisit toujours le mauvais pour la génération de slug.
Existe-t-il un moyen agréable et propre de contrôler quelle catégorie sera choisie pour les post-limaces?
Merci beaucoup!
WordPress choisit l'ID le plus bas comme principal permalien. Cependant, TOUTES LES catégories contiendront votre message automatiquement. Signifiant ces deux:
... renverra votre message (étant donné que post-A est à la fois dans les catégories A et B) via une redirection. Il ne peut pas vous les lister tous sur la page d'édition, désolé. Mais cela garantira leur disponibilité dans toutes les catégories.
Bien sûr, get_permalink
vous renverra le mauvais.
http://codex.wordpress.org/Using_Permalinks#Using_.25category.25_with_multiple_categories_on_a_post
Maintenant, pour redéfinir le comportement, regardez:
http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/link-template.php#L71 , spécifiquement un peu plus bas sur la ligne 121. Il va utiliser $cats[0]->slug
après le tri par ID. Ce qui ne semble pas pouvoir être accroché de quelque manière que ce soit à l'intérieur, donc plus haut ou plus bas.
Ceci est un ticket qui allait changer sa façon de fonctionner http://core.trac.wordpress.org/ticket/18752 il est marqué pour Version future , cependant. Abonnez-vous au billet pour manifester votre intérêt, il sera peut-être intégré à WordPress 3.5 plus tard cette année.
Le filtre pre_post_link
vous permettra de remplacer le permalien. post_link
aussi.
Sinon, get_the_category
devrait vous permettre de pirater les identifiants pour un message (ou de supprimer les autres pour n'en laisser qu'un), mais cela devrait uniquement lorsque le permalien est demandé.
add_filter( 'pre_post_link', function( $permalink, $post ) {
if ( strpos($permalink, '%category%') === false )
return; /* not interested */
add_filter( 'get_the_categories', 'wpse46860_Prune_categories' );
return $permalink;
}, null, 2 );
function wpse46860_Prune_categories( $categories ) {
/* run once */
remove_filter( 'get_the_categories', 'wpse46860_Prune_categories' );
/* .. Prune the categories to leave the one you need .. */
global $_Hijack_post_id;
return $categories;
}
C'est un hack.
Une difficulté supplémentaire est d'obtenir le post_ID pour élaguer les catégories, le filtre get_the_categories
ne nous transmet pas le post_ID; utilisez une propriété globale (sale) ou une propriété de classe (clean).
Vous pouvez essayer différents plugins permalink comme:
Vous pouvez toujours aller avec un plugin. Hikari Permalink fait exactement ce que vous cherchez ... sans tracas.
SI vous pouvez enregistrer la catégorie de votre choix comme permalien par défaut, vous pouvez vous connecter à la fonction get_permalink à l'aide du filtre "pre_post_link" ....
Cela pourrait aussi aider, jetez un coup d'œil .. http://shibashake.com/wordpress-theme/wordpress-permalink-add