Intereting Posts
Как я могу назвать имя автора в сообщении Как подсчитать количество терминов в таксономии Почему мой WP_Query дважды выводит мои записи? Планирование не работает из-за кэширования? Пользовательский тип почтового сообщения Переписывать (противоречит URL-адресу страницы) Как изменить существующие правила перезаписи? Установка WordPress в каталог пользователя без каких-либо прав администратора Функция контактной формы должна быть в functions.php или в файле плагина? Вложенные инструкции if для эха только одной строки на основе того, какой тег был отфильтрован? Избегайте изменения запроса меню с помощью suppress_filters => false Периодически получение jQuery «… не является функцией» ошибки <! – more -> quicktag break Плагин FancyBox на первой странице моего блога Флажок для описания в Виджет Связать страницу с конкретным шаблоном одной записи? Печать короткого кода в пользовательском манипуляторе не там, где вводится короткий код

Почему шаблоны Woocommerce используют перехватчики, а не get_template_part

Почему Woocommerce использует крючки, а не включает в себя части шаблона?

Я нахожусь в процессе создания моей первой темы Woocommerce, и кажется, что деактивировать текущие перехватчики, а затем читать их, чтобы изменить порядок реального переполнения раздела. Для меня более разумно, что вы просто включаете каждую из частей шаблона, используя get_template_part() .

Что мне не хватает / в чем польза от этого?

Solutions Collecting From Web of "Почему шаблоны Woocommerce используют перехватчики, а не get_template_part"

Я не знаком с Woocommerce, но, короче говоря, get_template_part() ищет только части шаблона в родительских и дочерних темах, а не в плагинах.

Если вы посмотрите на исходный код, get_template_part() использует locate_template который имеет следующий исходный код ( который находится там, где выполняется поиск самой части шаблона )

 function locate_template($template_names, $load = false, $require_once = true ) { $located = ''; foreach ( (array) $template_names as $template_name ) { if ( !$template_name ) continue; if ( file_exists(STYLESHEETPATH . '/' . $template_name)) { $located = STYLESHEETPATH . '/' . $template_name; break; } elseif ( file_exists(TEMPLATEPATH . '/' . $template_name) ) { $located = TEMPLATEPATH . '/' . $template_name; break; } } if ( $load && '' != $located ) load_template( $located, $require_once ); return $located; } 

Как вы можете видеть, locate_template ищет только шаблоны в родительских и дочерних темах

Вот почему вы не можете использовать get_template_part() в плагине или использовать его для вызова частей шаблона в тему из плагина.

EDIT из комментариев от @MarkKaplun

Помимо простого способа, с помощью которого get_template_part() работает при извлечении частей шаблона, Марк также указал на действительный момент в комментариях об использовании Woocommerce

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

 /** * @since 1.2.0 * */ function add_action(...) { /* ... */ } 

,

 /** * @since 3.0.0 * */ function get_template_part(...) { /* ... */ } 

WooCommerce был запущен в сентябре 2011 года. Однако он не был закодирован за день, они, должно быть, начались несколькими месяцами ранее.

В то время WP был только пост 3.0 (огромное обновление, кстати), и ничего об обновлении WP, тем или плагинов работало так же гладко, как сейчас.

Кроме того, add_action() и add_filter() являются основой концепции WP. Вы можете быть уверены, что они никогда не устареют. Это путь, когда вы кодируете нечто такое же большое, как WooCommerce.

Как вы, наверное, знаете, WC предоставляет систему шаблонов .