Intereting Posts
Отправлять электронную почту из области администрирования в адрес в настраиваемом поле Пользовательские шаблоны страниц для сложного приложения – код должен находиться в плагине, а не в теме Кэш-папка WordPress с W3-Total-Cache не показывает новые сообщения Перетаскивание изображений с заголовком в редакторе WP Несколько настраиваемых полей с тем же именем Получение пересечения двух терминов из двух разных пользовательских таксономий через API Сообщение об ошибке в сообщениях в блоге только в моей локальной среде Как создать виджет, который позволяет только один экземпляр? Получить категорию таксономии для объекта запросов в цикле Как получить сообщения по нескольким идентификаторам почты? Ссылка таксономии не работает (приводит к 404 страницам) Backstretch.js и уменьшенные размеры уменьшают время загрузки Измените имя класса на «current_ancestor» в wp_nav_menu Создание постконтента с внешнего веб-скребка через JSON или RPC Как очистить ввод пользователя?

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