Bonjour et merci d'avoir lu.
Je veux insérer l'auteur du message dans mon slug de type message personnalisé.
Exemple: http://example.com/charts/%author%/
Des idées comment accomplir ceci?
Voici mon type de message personnalisé:
register_post_type('charts', array(
'label' => 'Charts',
'description' => '',
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => '/charts/author'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'trackbacks',
'custom-fields',
'comments',
'author',
),
'labels' => array (
'name' => 'Charts',
'singular_name' => 'Charts',
'menu_name' => 'Charts',
'add_new' => 'Add Charts',
),
));
bénisse jnz
J'ai trouvé une solution et décidé de partager parce que c'est bien d'être Nice. Cela fonctionne pour moi et est basé sur une solution de Jonathan Brinley . Si quelqu'un a des suggestions ou des corrections, n'hésitez pas à me le faire savoir.
Commencez par créer votre type d'article personnalisé et configurez-le comme ceci (il ne s'agit que d'un exemple. N'oubliez pas de l'adapter à vos besoins. Le paramètre slug est important!)
register_post_type('charts', array(
'label' => 'Whatever',
'description' => '',
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'capability_type' => 'post',
'hierarchical' => true,
'rewrite' => array('slug' => '/whatever/%author%'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'trackbacks',
'custom-fields',
'comments',
'author'
)
));
Ensuite, configurez une fonction pour votre filtre (dans functions.php
):
function my_post_type_link_filter_function($post_link, $id = 0, $leavename = FALSE) {
if (strpos('%author%', $post_link) === FALSE) {
$post = &get_post($id);
$author = get_userdata($post->post_author);
return str_replace('%author%', $author->user_nicename, $post_link);
}
}
Activez ensuite le filtre (également dans functions.php
):
add_filter('post_type_link', 'my_post_type_link_filter_function', 1, 3);
Comme je l'ai dit, je ne suis pas sûr que ce soit la meilleure façon de procéder mais cela fonctionne pour moi :)