Доработка структуры файлов темы
Идея:
Иметь возможность группировать в одном месте все необходимые для конкретной страницы файлы (скрипты, стили, картинки и пр.) ну и подключать их только для этой страницы.
Решение:
Ниже представлен скрипт.
Вопрос:
Интересно мнение людей хорошо знающих 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');
});