WordPress Version: 6.4
/**
* Prints out option HTML elements for the page templates drop-down.
*
* @since 1.5.0
* @since 4.7.0 Added the `$post_type` parameter.
*
* @param string $default_template Optional. The template file name. Default empty.
* @param string $post_type Optional. Post type to get templates for. Default 'page'.
*/
function page_template_dropdown($default_template = '', $post_type = 'page')
{
$templates = get_page_templates(null, $post_type);
ksort($templates);
foreach (array_keys($templates) as $template) {
$selected = selected($default_template, $templates[$template], false);
echo "\n\t<option value='" . esc_attr($templates[$template]) . "' {$selected}>" . esc_html($template) . '</option>';
}
}