Intereting Posts
отключить комментарии, если существует массив Рекомендуемое изображение (отзывчивое) над содержимым слишком мало после обновления до WordPress 4.4 Конкретный архив категории Пользовательский запрос, просматривающий несколько настраиваемых полей и правильная сортировка Не удается получить доступ к htaccess Могу ли я использовать REST-API в формате простой permalink? Как изменить категорию в URL-адресе для сообщений в нескольких категориях? 2 Различная таксономия с иерархическими отношениями Как разработать настраиваемое перенаправление URL-адресов Как получить URL-адрес для короткого кода? Как показать родительскую и дочернюю категорию WordPress с помощью другого шаблона? do_shortcode внутри обратного вызова AJAX Выполнение `createimagefrompng ()` из save_post hook (или эквивалентного крючка) Выделите родительский пункт меню, когда дочерний пост Использование $ wpdb для извлечения сообщений с метаданными

Попытка управлять шаблонами в блоге с множеством пользовательских таксономий

В моем последнем проекте я занимаюсь веб-сайтом, который включает в себя десятки пользовательских таксономий, пару типов сообщений, контент и т. Д. И требует разных шаблонов для разных авторов или тегов.

Прямо сейчас, моя папка шаблона имеет около 70 php-файлов для шаблонов, что действительно запутывает.

Я заметил, что некоторые темы, например двадцать, позволяют хранить файлы шаблонов в папках и вызывать их в цикле следующим образом:

get_template_part( 'template-parts/post/content', get_post_format() );

Но это в цикле. Мои шаблоны совершенно разные, поэтому я не могу использовать вышеупомянутое решение, потому что мне нужно будет использовать условные обозначения для изменения всего, что не является частью цикла.

Например, если у меня есть 3 типа сообщений, мне нужно сохранить 3 файла шаблона:

single-type1.php , single-type2.php и single-type3.php .

Эти шаблоны совершенно разные, как внутри, так и вне цикла (даже разные боковые панели), поэтому я не могу просто сделать single.php и вызвать соответствующий тип сообщения в цикле.

Есть ли способ адресовать WordPress о пользовательских файлах шаблонов, кроме как просто сохранить его непосредственно в папке темы?

Solutions Collecting From Web of "Попытка управлять шаблонами в блоге с множеством пользовательских таксономий"

Шаблоны страниц могут храниться в подкаталоге templates page-templates или templates в теме, но это не относится к настраиваемым шаблонам типа публикации или таксономии.

К счастью, фильтр template_include можно использовать для изменения шаблона, который будет загружен. В приведенном ниже примере файлы шаблонов хранятся в каталоге /theme-name/templates/ .

 /** * Filters the path of the current template before including it. * @param string $template The path of the template to include. */ add_filter( 'template_include', 'wpse_template_include' ); function wpse_template_include( $template ) { // Handle taxonomy templates. $taxonomy = get_query_var( 'taxonomy' ); if ( is_tax() && $taxonomy ) { $file = get_theme_file_path() . '/templates/taxonomy-' . $taxonomy . '.php'; if ( file_exists( $file ) ) { $template = $file; } } // Handle post type archives and singular templates. $post_type = get_post_type(); if ( ! $post_type ) { return $template; } if ( is_archive() ) { $file = get_theme_file_path() . '/templates/archive-' . $post_type . '.php'; if ( file_exists( $file ) ) { $template = $file; } } if ( is_singular() ) { $file = get_theme_file_path() . '/templates/single-' . $post_type . '.php'; if ( file_exists( $file ) ) { $template = $file; } } return $template; } 

Вы можете использовать 1 шаблон для всех таксономий и называть его taxonomy.php или использовать template_include в своем файле функций.

 add_filter( 'template_include', 'tax_page_template', 99 ); function tax_page_template( $template ) { if ( is_tax( 'taxonomy' ) ) { $new_template = locate_template( array( 'your-tax.php' ) ); if ( '' != $new_template ) { return $new_template ; } } return $template; } 

В зависимости от темы, которую вы используете, вы также можете использовать 1 шаблон в раскрывающемся меню «Атрибуты страницы»> «Шаблоны» и изменять каждый шаблон с помощью настроек темы.