Во- первых вам нужна функция add_rewrite_rule(). Вам нужно по определенной маске url выдавать определенный пост, указывая доп. параметр части url по которой индефиц. заголовки.
add_action('init', 'addMyRewrite');
function addMyRewrite() {
add_rewrite_rule('^leaf/([0-9]+)/?', 'index.php?page_id=$matches[1]', 'top');//тут надо вставить свои данные
/* Для того что бы обновить кэш используйте такую конструкцию. После того как правильно настроите add_rewrite_rule нужно отключить 2 нижние строки.*/
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
Это поможет Вам выдавать по разным урлам один и тот же пост с одинаковым шаблоном.
Во-вторых для вывода разных заголовков можно использовать custom fields, но я бы советовал просто в шаблоне создать массив, где ключом является доп. параметр, а значением заголовок. Ну и выводить заголовок.
Так же что бы добавить доп. параметр в get_query_var Вам нужно использовать конструкцию
add_filter( 'query_vars', function( $vars ){
$vars[] = 'доп. параметр';
return $vars;
} );
//этот фильтр нужно добавить в функцию addMyRewrite()