Réécriture d'URL de type publication personnalisée?

29

J'ai configuré un type de publication personnalisé pour mes projets de portefeuille. L’URL principale à cet effet est située dans / projects /

Maintenant, j’ai également configuré mon blog de façon permalink vers / articles / * / pour la structure permalink. Cela signifie que lorsque je vais voir un projet de portefeuille, l'URL change en / articles / projets / nom-projet /

.

Je sais qu’il doit exister un moyen de réécrire les permaliens UNIQUEMENT pour le type de publication personnalisé de mes projets. Mais je ne connais pas la syntaxe pour déclarer l'URL slug. J'apprécierais toute aide que je pourrais obtenir!

    
posée Jake 25.05.2012 - 17:47
la source

2 réponses

34

Lorsque vous enregistrez le type d'article personnalisé, vous devez indiquer que la structure de l'URL existante ne doit pas être ajoutée à la règle de réécriture.

En bref, cela signifie que cette ligne de votre register_post_type call:

'rewrite' => array('slug' => 'projects'),

devrait se transformer en ceci:

'rewrite' => array('slug' => 'projects','with_front' => false),

Pour plus d'informations, consultez l'argument rewrite dans la entrée de codex sur register_post_type

modifier: assurez-vous qu'après avoir mis à jour le code, vous effacez les règles de réécriture en accédant à Paramètres > Permaliens Sinon, vous verrez toujours les anciens liens.

    
réponse donnée 0x61696f 25.05.2012 - 18:29
la source
12

J'ai eu ce problème littéralement il y a 3 jours, puis je suis tombé sur une série sur wp.tutsplus.com . J'ai échangé mon propre code pour mieux répondre à votre question, mais c'est ce avec quoi j'ai fini après avoir suivi la série. De plus, gardez à l’esprit que cela n’a pas été testé.

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','description' => '',
       'public' => true,
       'show_ui' => true,
       'show_in_menu' => true,
       'capability_type' => 'post',
       'hierarchical' => false,
       'publicly_queryable' => true,
       'rewrite' => false,
       'query_var' => true,
       'has_archive' => true,
       'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
       'taxonomies' => array('category','post_tag'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

Théoriquement, vous pouvez échanger tout ce que vous voulez dans l'URL stockée dans la variable $projects_structure . Ce qu'il y a exactement ce que j'ai fini par utiliser.

Bonne chance et, comme toujours - assurez-vous de revenir et de nous dire comment cela a fonctionné! :)

    
réponse donnée cmegown 25.05.2012 - 18:18
la source

Lire d'autres questions sur les étiquettes