web-dev-qa-db-fra.com

Types de messages personnalisés et permaliens: Quel gâchis!

Je sais que c'est un problème courant avec les post-types personnalisés, mais je suis coincé là. J'ai créé un type de post personnalisé nommé 'cpt_soins'. Je n'ai pas de page avec un nom similaire (singulier/pluriel) ...

J'ai essayé avec 'rewrite' => array('slug' => 'nos-soins-et-services');

lorsque j'ai enregistré mon type de message personnalisé afin d'afficher une URL plus jolie que "/? cpt_soins = soins-visage-a-la-rose" ... Mais je suis coincé avec une erreur 404.

Je veux ce permalien moche: "http: // localhost: 8888/wordpress /? Cpt_soins = soins-visage-à-la-rose" ---> transformé en: "http: // localhost: 8888/wordpress/nos- soins-et-services/soins-visage-a-la-rose "

Je sais que je peux utiliser "add_rewrite_rule () avec regex". Mais je n'ai pas commencé à travailler. Pourriez-vous me donner le code s'il vous plaît pour le functions.php afin d'obtenir mon permalien?

Merci beaucoup

2
Studiomambo

Change ça:

'rewrite' => array('slug' => 'nos-soins-et-services');

Pour ça:

'rewrite' => array('slug' => 'nos-soins-et-services', 'with_front' => true);

2
Chris_O

Vous devez vider les règles de réécriture après avoir modifié l'argument 'rewrite'. Cela peut être fait plus facilement en accédant à WP Admin -> Paramètres -> Permaliens.

1
scribu

Votre jolie URL ne fonctionne pas car vous n'avez pas introduit la ligne 'rewrite' => false, dans le argsarray lors de la déclaration du type de publication personnalisé.

Utilisez ce code pour résoudre votre problème .... J'espère que cela fonctionne pour vous

//This function is to register the archive page of post type
function add_rewrite_rules($aRules) {
$aNewRules = array('nos-soins-et-services/?$' => 'index.php?post_type=cpt_soins');
$aRules = $aNewRules + $aRules;
return $aRules;
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');

//This function is to set your Custom URL Structure and replace it with default structure
function rewrite_flush(){
  global $wp_rewrite;
  $cpt_soins_structure = 'nos-soins-et-services/%cpt_soins%';
    $wp_rewrite->add_rewrite_tag("%cpt_soins%", '([^/]+)', "cpt_soins=");
    $wp_rewrite->add_permastruct('cpt_soins', $cpt_soins_structure, false);
  $wp_rewrite->flush_rules();
}
add_action('init','rewrite_flush'
1
Shahrukh Khan

J'ai compris ! J'ai utilisé le plugin "Custom Post Type UI" pour enregistrer mon type personnalisé. J'étais coincé avec mes problèmes de permaliens alors j'ai décidé de tout refaire manuellement sans plugin. J'ai donc pris le code du codex pour enregistrer mon type de pot personnalisé et mes taxonomies. Je crée un modèle de page pour afficher mon type de post personnalisé, je crée un article sous mon type de post personnalisé, etc. Maintenant, tout fonctionne comme un charme (la catégorie avec mes taxonomies et mes articles à côté de mes post-types personnalisés et en haut de cela: les jolis permaliens).

J'ai quitté le 'rewrite' => true . Plus rien à faire ... Ne vous embêtez pas avec les permaliens. Juste pour le plaisir que j'ai essayé avec 'rewrite' => array ('slug' => 'mon-mot-pour-mon-permalien'), ça marche aussi!

N'oubliez pas de vider les permaliens manuellement et dans votre fonction de registre pour cpt (au moins une fois) dans le functions.php ...

Quelqu'un at-il eu un problème similaire avec le plugin "Custom Post Type UI"? Quel plugin utilisez-vous pour créer/gérer vos post-types personnalisés?

Merci à tous et amusez-vous avec vos post-types personnalisés! :-)

1
Studiomambo

Il semble que vous utilisiez la configuration par défaut permalink. Vous devez activer la réécriture d'URL avec mod_rewrite pour obtenir de "jolis" permaliens. Lisez la page de liens interdépendants du codex pour plus d'informations.

0
Milo