Доработка структуры файлов темы
Идея:
Иметь возможность группировать в одном месте все необходимые для конкретной страницы файлы (скрипты, стили, картинки и пр.) ну и подключать их только для этой страницы.
Решение:
Ниже представлен скрипт.
Вопрос:
Интересно мнение людей хорошо знающих WP.
С чем могут быть проблемы?
Вроде работает, но может я чего то не знаю, о чем то не подумал.
Например есть страница:
//site.dev/roditel/ditya/
Предполагаемая структура файлов:
wp-content/ themes/ custom/ _pages_/ roditel/ ditya/ js/ script.js css/ style.css imgs/ functions.php index.php ...
Скрипт (рабочий):
add_filter('template_include', function($template) { global $CUSTOM_STRUCTURE_PATH; $start_dir_name = '_pages_'; $start_dir_root = get_stylesheet_directory() . '/' . $start_dir_name; $start_dir_http = get_stylesheet_directory_uri() . '/' . $start_dir_name; $uri_arr = explode('/', trim($_SERVER['REQUEST_URI'], '/')); $folder_root = $start_dir_root; $folder_http = $start_dir_http; if (!file_exists($folder_root)) return $template; foreach ($uri_arr as $level) { $folder_root = $folder_root . '/' . $level; $folder_http = $folder_http . '/' . $level; if (!file_exists($folder_root)) return $template; $CUSTOM_STRUCTURE_PATH = $folder_http; $functions = $folder_root . '/functions.php'; if (file_exists($functions)) { require $functions; } $index = $folder_root . '/index.php'; if (!file_exists($index)) continue; return $index; } return $template; });
Пример functions.php:
// Работает правильное подключение скриптов и стилей! add_action('wp_enqueue_scripts', function() { global $CUSTOM_STRUCTURE_PATH; wp_enqueue_style('x1', $CUSTOM_STRUCTURE_PATH . '/css/style.css'); wp_enqueue_script('x1', $CUSTOM_STRUCTURE_PATH . '/js/script.js'); });