Je sais que les gens ont déjà posé cette question et sont allés jusqu'à ajouter le type de message personnalisé et réécrire pour le permalien.
Le problème est que j'ai 340 catégories existantes que je voudrais continuer à utiliser. J'étais capable de voir / catégorie / sous-catégorie / nom de poste
Maintenant, j'ai le slug de customposttype / postname. La sélection de la catégorie n'apparaît plus dans le permalien ... Je n'ai pas changé le paramètre du permalien dans admin pour quelque chose de différent.
Y a-t-il quelque chose qui me manque ou que je dois ajouter à ce code?
function jcj_club_post_types() {
register_post_type( 'jcj_club', array(
'labels' => array(
'name' => __( 'Jazz Clubs' ),
'singular_name' => __( 'Jazz Club' ),
'add_new' => __( 'Add New' ),
'add_new_item' => __( 'Add New Jazz Club' ),
'edit' => __( 'Edit' ),
'edit_item' => __( 'Edit Jazz Clubs' ),
'new_item' => __( 'New Jazz Club' ),
'view' => __( 'View Jazz Club' ),
'view_item' => __( 'View Jazz Club' ),
'search_items' => __( 'Search Jazz Clubs' ),
'not_found' => __( 'No jazz clubs found' ),
'not_found_in_trash' => __( 'No jazz clubs found in Trash' ),
'parent' => __( 'Parent Jazz Club' ),
),
'public' => true,
'show_ui' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'menu_position' => 5,
'query_var' => true,
'supports' => array(
'title',
'editor',
'comments',
'revisions',
'trackbacks',
'author',
'excerpt',
'thumbnail',
'custom-fields',
),
'rewrite' => array( 'slug' => 'jazz-clubs-in', 'with_front' => true ),
'taxonomies' => array( 'category','post_tag'),
'can_export' => true,
)
);
Réponses:
Il y a 2 points d'attaque à couvrir lorsque vous ajoutez des règles de réécriture de type de publication personnalisées:
Réécrire les règles
Cela se produit lorsque les règles de réécriture sont générées dans
wp-includes/rewrite.php
dansWP_Rewrite::rewrite_rules()
. WordPress vous permet de filtrer les règles de réécriture pour des éléments spécifiques tels que les publications, les pages et divers types d'archives. Où vous voyezposttype_rewrite_rules
laposttype
partie doit être le nom de votre type de publication personnalisé. Alternativement, vous pouvez utiliser lepost_rewrite_rules
filtre tant que vous n'effacez pas également les règles de publication standard.Ensuite, nous avons besoin de la fonction pour générer réellement les règles de réécriture:
La principale chose à surveiller ici si vous décidez de jouer est le booléen «Walk répertoires». Il génère des règles de réécriture pour chaque segment d'une infrastructure et peut entraîner des incohérences de règles de réécriture. Lorsqu'une URL WordPress est demandée, le tableau des règles de réécriture est vérifié de haut en bas. Dès qu'une correspondance est trouvée, elle chargera tout ce qu'elle a rencontré, par exemple si votre infrastructure a une correspondance gourmande, par exemple. pour les
/%category%/%postname%/
répertoires for et walk est activé, il affichera des règles de réécriture pour les deux/%category%/%postname%/
ET/%category%/
qui correspondront à tout. Si cela arrive trop tôt, vous êtes foutu.Permaliens
Il s'agit de la fonction qui analyse les permaliens de type de publication et convertit une infrastructure (par exemple, '/% year% /% monthnum% /% postname% /') en une URL réelle.
La partie suivante est un exemple simple de ce qui serait idéalement une version de la
get_permalink()
fonction trouvée danswp-includes/link-template.php
. Les permaliens personnalisés sont générés parget_post_permalink()
ce qui est une version très édulcorée deget_permalink()
.get_post_permalink()
est filtré parpost_type_link
donc nous utilisons cela pour créer une permastructure personnalisée.Comme mentionné, c'est un cas très simplifié pour générer un ensemble de règles de réécriture personnalisé et des permaliens, et n'est pas particulièrement flexible, mais cela devrait suffire pour vous aider à démarrer.
La triche
J'ai écrit un plugin qui vous permet de définir des infrastructures pour tous les types de publication personnalisés, mais comme vous pouvez l'utiliser
%category%
dans la structure de permalien pour les publications, mon plugin prend en charge%custom_taxonomy_name%
toutes les taxonomies personnalisées que vous avez également, oùcustom_taxonomy_name
est le nom de votre taxonomie, par exemple.%club%
.Cela fonctionnera comme vous vous en doutez avec les taxonomies hiérarchiques / non hiérarchiques.
http://wordpress.org/extend/plugins/wp-permastructure/
la source
$permalink = home_url(...
soit remplacé$permalink = user_trailingslashit(...
et jamais utilisé. Ou est-ce que je manque quelque chose?$post_link
n'est même pas défini. Était-ce censé l'être$permalink = user_trailingslashit( $permalink, 'single' );
?$permalink
pas l' être$post_link
. Cheers :)Vous avez la solution!
Pour disposer de permaliens hiérarchiques pour le type de publication personnalisé, installez le plug-in de permaliens de type de publication personnalisé ( https://wordpress.org/plugins/custom-post-type-permalinks/ ).
Mettre à jour le type de message enregistré. J'ai le nom du type de message comme centre d'aide
Et voici la taxonomie enregistrée
Cette ligne fait fonctionner votre permalien
vous pouvez supprimer
%post_id%
et conserver/%help_centre_category%/%postname%/"
N'oubliez pas de vider les permaliens du tableau de bord.
la source
J'ai trouvé une solution!!!
(Après des recherches sans fin .. Je peux avoir des permaliens de TYPE DE POSTE PERSONNALISÉS comme:
example.com/category/sub_category/my-post-name
ici le code (dans functions.php ou plugin):
la source
Vous avez plusieurs erreurs avec votre code. J'ai nettoyé votre code existant:
Remplacez votre code par le code ci-dessus et voyez si cela fonctionne. Répondez si vous avez d'autres questions et j'essaierai de vous aider.
MODIFIER:
J'ai remarqué que j'avais omis
'has_archive' => true
.la source