Slug personalizzato per custom post type con autore
Ciao e grazie per la lettura.
Vorrei inserire l'autore del post nello slug del mio custom post type.
Esempio: http://example.com/charts/%author%/
Qualche idea su come realizzarlo?
Ecco il mio custom post type:
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',
),
));
Saluti
jnz

Ho trovato una soluzione e ho deciso di condividerla perché è bello essere gentili. Funziona per me ed è basata su una soluzione di Jonathan Brinley. Se qualcuno ha suggerimenti o correzioni, sentitevi liberi di farmelo sapere.
Per prima cosa, crea il tuo custom post type e configuralo in questo modo (questo è solo un esempio, ricordati di adattarlo alle tue esigenze. L'impostazione dello slug è importante!):
register_post_type('charts', array(
'label' => 'Qualsiasi',
'description' => '',
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'capability_type' => 'post',
'hierarchical' => true,
'rewrite' => array('slug' => '/qualiasi/%author%'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'trackbacks',
'custom-fields',
'comments',
'author'
)
));
Successivamente, imposta una funzione per il tuo filtro (in 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);
}
}
Poi attiva il filtro (sempre in functions.php
):
add_filter('post_type_link', 'my_post_type_link_filter_function', 1, 3);
Come ho detto, non sono sicuro che questo sia il modo migliore per farlo, ma funziona per me :)
