Intereting Posts
2 orderby в wp_query с 2 настраиваемыми полями Что может привести к тому, что действие «wp» будет срабатывать дважды на странице (но только один раз за сообщение) только в Firefox? функция стирания ругательных слов «paged» в wp_query не работает Изменения Customizer.js не распознаются Как удалить имена классов категорий постов из body_class Если запрос в боковой панели Как создать элемент меню, который не является страницей Добавить возможности загрузки файлов, необходимые для пользовательской роли для не-сообщений Чтобы сохранить информацию пользователя на той же странице, отправив форму Добавление и удаление столбцов из панели страниц admin Страница результатов пользовательского поиска, отображающая только 1 результат. Фото комментарий плагин Невозможно отменить регистрацию скрипта с помощью wp_deregister_script Перепишите для страницы с неизвестной родительской страницей

Как WordPress выбирает шаблон типа архива?

Я не могу найти исчерпывающий список критериев того, как WordPress определяет, какой шаблон типа архива он выбирает.

Из того, что я понимаю, он использует URL-формы для этой цели, например:

example.com/category/some-category -> category.php (i guess tags work similarly) example.com/2012 -> date.php 

Но как насчет author.php и taxonomy.php? Что заставляет иерархию шаблонов использовать эти маршруты?

Мое невежество связано с тем, как WP выбирает определенные шаблоны для I, которые я не знаю, как запускать. Я думаю, что я понимаю шаблоны категорий с более высокой специфичностью и archive.php. Я понимаю, как catch-all, прежде чем перейти к index.php, но я понятия не имею, когда WP выберет, например, author.php и почему.

Например, предположим, что у меня две записи одного автора. Как заставить WP использовать шаблон author.php, чтобы показывать мне сообщения этого автора?

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

Например, я не могу прочитать из диаграммы, что если у меня есть URL-адрес в форме example.com/2012, он будет использовать шаблон date.php. Это имеет смысл, но я не вижу, что URL-адрес должен быть в любой форме, особенно этой.

В общем, мне трудно понять, как WordPress выбирает, какой шаблон (маршрут) принимать. Возможно, я неправильно понял, но я ожидаю, что WordPress определит, какой шаблон использовать, прежде чем он начнет интерпретировать его содержимое. В этот момент он может отображать все, что угодно, в зависимости от его содержимого и с помощью функций is_sometype (). Я не понимаю, как это доходит до этого. Неужели я неправильно понял это рассуждение? Я был бы очень благодарен, если бы кто-то мог ответить на этот вопрос.

Редактировать: Некоторые последующие вопросы после ответа Чипа:

Правильно ли я понимаю, что WP анализирует постоянные ссылки, используя правила перезаписи для построения запроса, или же запрос уже находится в «родном» формате, то есть URL-адрес, за которым следует? и конкатенация переменных запроса? Может ли возникнуть их сочетание?

Каково определение «текущего контекста» в отношении запросов? Не могли бы вы привести пример?

Что означают синие .keywords, которые находятся ниже каждого окна в диаграмме Чипа?

Solutions Collecting From Web of "Как WordPress выбирает шаблон типа архива?"

WordPress использует иерархию шаблонов для определения того, какой файл шаблона загружается на основе текущего контекста:

Иерархия шаблонов WordPress

Эта диаграмма представляет собой визуальное представление \wp-includes\template-loader.php , которое содержит логику выбора шаблона на основе контекста.

Что касается ваших конкретных вопросов:

Например, предположим, что у меня две записи одного автора. Как заставить WP использовать шаблон author.php, чтобы показывать мне сообщения этого автора?

WordPress делает это автоматически. Предполагая, что у вас есть довольно постоянные ссылки, авторский архив для данного автора: example.com/author/{author}

Например, я не могу прочитать из диаграммы, что если у меня есть URL-адрес в форме example.com/2012, он будет использовать шаблон date.php. Это имеет смысл, но я не вижу, что URL-адрес должен быть в любой форме, особенно этой.

Я думаю, вы приближаетесь к нему точно в обратном направлении . Опять же, если у вас есть довольно постоянные ссылки, и вы просматриваете архивы на основе даты в течение определенного года, месяца или дня, URL-адрес будет выглядеть следующим образом:

  • example.com/{year}
  • example.com/{year}/{month}
  • example.com/{year}/{month}/{day}

Но самое главное: ничто из этого не имеет ничего общего с иерархией шаблонов . Независимо от структуры permalink, WordPress спрашивает: « Это дата-архив? » Если да, то WordPress использует иерархию шаблонов на основе даты, чтобы определить, какой файл шаблона загрузить.

В общем, мне трудно понять, как WordPress выбирает, какой шаблон (маршрут) принимать.

Иерархия шаблонов отвечает на все эти вопросы. 🙂

Возможно, я неправильно понял, но я ожидаю, что WordPress определит, какой шаблон использовать, прежде чем он начнет интерпретировать его содержимое.

Конечно.

В этот момент он может отображать все, что угодно, в зависимости от его содержимого и с помощью функций is_sometype ().

Конечно, вы можете ; но если вы используете / загружаете более конкретный, основанный на контекстах файл шаблона, вам не нужно . Например, если вы загружаете date.php , вам не нужно использовать is_date() . Как уже известно, это правда , если этот файл шаблона загружен.

Я не понимаю, как это доходит до этого. Неужели я неправильно понял это рассуждение? Я был бы очень благодарен, если бы кто-то мог ответить на этот вопрос.

Место для запуска – это сам запрос , который содержит / определяет текущий контекст :

  1. Построить запрос
  2. В запросе определите текущий контекст
  3. На основе текущего контекста определите, какой файл шаблона загружать

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

редактировать

Чтобы задать дополнительные вопросы:

Правильно ли я понимаю, что WP анализирует постоянные ссылки, используя правила перезаписи для построения запроса, или же запрос уже находится в «родном» формате, то есть URL-адрес, за которым следует? и конкатенация переменных запроса? Может ли возникнуть их сочетание?

Вообще говоря, правила перезаписи – это отдельная (хотя и связанная) тема. Если у вас есть конкретные вопросы о правилах перезаписи, я бы поискал на сайте и задал отдельный вопрос.

Тем не менее: правила перезаписи, как и контекст / шаблон, получены из запроса. WordPress определяет шаблон, основанный на контекстах, независимо от того, используются ли правила перезаписи.

Каково определение «текущего контекста» в отношении запросов? Не могли бы вы привести пример?

Опять же, вы должны вернуться к запросу. Запрос – это объект, который определяет / определяет / содержит всю контекстуальную информацию. Посмотрите на WP_Query() в источнике , если хотите подробные данные.

По сути, контекст определяется переменными запроса URL . (Примечание: речь идет не о довольно постоянных ссылках или правилах перезаписи, которые также используют одни и те же переменные запроса URL-адреса.) Здесь вы можете увидеть синтаксический анализ переменных запроса .

Что означают синие .keywords, которые находятся ниже каждого окна в диаграмме Чипа?

Это классы CSS, добавленные в body_class() , на основе контекста.

  1. category-{slug}.php - If the category's slug were news, WordPress would look for category-news.php 2. category-{id}.php - If the category's ID were 6, WordPress would look for category-6.php 3. category.php 4. archive.php 5. index.php 

Это должно сработать. Сообщите мне, нужно ли вам знать больше.