WordPress Version: 6.4
/**
* Outputs the formatted file list for the theme file editor.
*
* @since 4.9.0
* @access private
*
* @global string $relative_file Name of the file being edited relative to the
* theme directory.
* @global string $stylesheet The stylesheet name of the theme being edited.
*
* @param array|string $tree List of file/folder paths, or filename.
* @param int $level The aria-level for the current iteration.
* @param int $size The aria-setsize for the current iteration.
* @param int $index The aria-posinset for the current iteration.
*/
function wp_print_theme_file_tree($tree, $level = 2, $size = 1, $index = 1)
{
global $relative_file, $stylesheet;
if (is_array($tree)) {
$index = 0;
$size = count($tree);
foreach ($tree as $label => $theme_file) {
++$index;
if (!is_array($theme_file)) {
wp_print_theme_file_tree($theme_file, $level, $index, $size);
continue;
}
?>
<li role="treeitem" aria-expanded="true" tabindex="-1"
aria-level="<?php
echo esc_attr($level);
?>"
aria-setsize="<?php
echo esc_attr($size);
?>"
aria-posinset="<?php
echo esc_attr($index);
?>">
<span class="folder-label"><?php
echo esc_html($label);
?> <span class="screen-reader-text">
<?php
/* translators: Hidden accessibility text. */
_e('folder');
?>
</span><span aria-hidden="true" class="icon"></span></span>
<ul role="group" class="tree-folder"><?php
wp_print_theme_file_tree($theme_file, $level + 1, $index, $size);
?></ul>
</li>
<?php
}
} else {
$filename = $tree;
$url = add_query_arg(array('file' => rawurlencode($tree), 'theme' => rawurlencode($stylesheet)), self_admin_url('theme-editor.php'));
?>
<li role="none" class="<?php
echo esc_attr(($relative_file === $filename) ? 'current-file' : '');
?>">
<a role="treeitem" tabindex="<?php
echo esc_attr(($relative_file === $filename) ? '0' : '-1');
?>"
href="<?php
echo esc_url($url);
?>"
aria-level="<?php
echo esc_attr($level);
?>"
aria-setsize="<?php
echo esc_attr($size);
?>"
aria-posinset="<?php
echo esc_attr($index);
?>">
<?php
$file_description = esc_html(get_file_description($filename));
if ($file_description !== $filename && wp_basename($filename) !== $file_description) {
$file_description .= '<br /><span class="nonessential">(' . esc_html($filename) . ')</span>';
}
if ($relative_file === $filename) {
echo '<span class="notice notice-info">' . $file_description . '</span>';
} else {
echo $file_description;
}
?>
</a>
</li>
<?php
}
}