Intereting Posts
Пользовательская тема не будет использовать search.php WordPress не отображает все сообщения в базе данных Как добавить имя редактора в запись meta byline? Цена крюка для woocommerce в выпуске бэкэнда Почему файл functions.php называется 8 раз только для одной загрузки страницы? Добавлено неправильное правило перезаписи, получившего ошибку Запрос типа персонализированного сообщения дважды на одной странице Категории ссылок, включая все сообщения Добавление пользовательского класса в тег body с использованием настраиваемых полей Почему wp_enqueue_style () в плагине не загружает таблицу стилей? Добавить плагин перед основным контейнером Функция locate_template – Файл не включается Является ли /wp-login.php?redirect_to доступным? wordpress multisite, как сохранить пользователя на субдомене во время процесса регистрации? Почему мои сообщения / страницы не отображаются в моей теме WordPress?

Почему шаблоны 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 предоставляет систему шаблонов .