Intereting Posts
Включая стороннюю библиотеку в WordPress, которая должна быть доступна с помощью wp-config Как создать короткий код для печати определенных значений, хранящихся в мета-массиве сообщений? Получить заголовок блога с помощью REST v2 Недопустимый тип файла при использовании wp_upload_bits для загрузки PDF в пользовательский тип сообщения Как добавить кнопку установленного изображения в wp_editor ()? Параметры WordPress admin, я не могу использовать jquery ajax для доступа к моему контенту из другого файла Почему этот код jQuery не работает? Отображение страницы на странице архива с неработающим фильтром таксономии Как создавать и работать с пользовательскими данными / таблицами (т. Е. Для произвольных данных)? условия таксономии экспорта и импорта из одной таксономии в другую Вопрос о запросах сообщений Отключить плагин только для одного сообщения Возможности роли администратора Получать данные о записи / странице вне цикла Установка верхнего предела загрузки

Загрузка файлов шаблонов из подпапки в моей теме?

Я работаю над сайтом, в котором будет до 30 шаблонов.

Я не хочу, чтобы все эти шаблоны в корне моей папки темы загромождали все.

Я знаю, как я могу изменить get_page_templates() в файле wp-admin/includes/theme.php чтобы он сканировал sub dirs в моей папке темы. Но я не хочу менять файлы ядра вручную – как я могу применить фильтр к get_page_templates() с фильтром, который я ввел в functions.php get_page_templates() ?

Поскольку код, который вы видите ниже, является моей первой попыткой, но он еще не работает, когда я помещаю код внутри function.php .

Однако я могу внести эти изменения в основной файл wp-admin/includes/theme.php но это не очень хорошая практика, и его всегда следует избегать правильно, поскольку автоматическое обновление может уничтожить его.

 function get_page_templates_override() { $themes = get_themes(); $theme = get_current_theme(); $templates = $themes[$theme]['Template Files']; $page_templates = array(); if ( is_array( $templates ) ) { $base = array( trailingslashit(get_template_directory()), trailingslashit(get_stylesheet_directory()) ); foreach ( $templates as $template ) { $basename = str_replace($base, '', $template); // modifide this by commenting it out so that sub dirs arent blocked // if ( false !== strpos($basename, '/') ) // continue; // modified this with FILE_USE_INCLUDE_PATH so sub dirs get scanned $template_data = implode( '', file( $template, FILE_USE_INCLUDE_PATH )); $name = ''; if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name ) ) $name = _cleanup_header_comment($name[1]); if ( !empty( $name ) ) { $page_templates[trim( $name )] = $basename; } } } return $page_templates; } add_filter('get_page_templates','get_page_templates_override', 1); 

Solutions Collecting From Web of "Загрузка файлов шаблонов из подпапки в моей теме?"

Эта часть чрезвычайно жесткая, см. Этот вопрос о загрузке шаблонов страниц из каталога плагинов .

С текущим состоянием связанного кода я бы не стал тратить время на это. Тем более, что вы хотите его для удобства (размещение шаблона в подкаталогах), а не функциональность (например, загрузка из папки плагина).

На этом есть несколько билетов: # 13265 и # 11216 .

Кроме того, он выглядит менее загроможденным, если вы префикс каждого шаблона с фиксированной строкой:

 template-a.php template-b.php 

и т.п.

Стоит отметить, что с WP 3.4 (почти год назад) теперь можно разместить файлы шаблонов в каталог под корнем темы, и WordPress будет обнаруживать и использовать их по мере необходимости.

Согласно http://nacin.com/2012/03/29/page-templates-in-subdirectories-new-in-wordpress-3-4/ .