Por que os modelos Woocommerce usam ganchos em vez de get_template_part

Por que a Woocommerce usa ganchos em vez de include peças de modelo?

Estou no processo de criar o meu primeiro tema do Woocommerce, e parece que desativando os ganchos atuais e, em seguida, lê-los para alterar a ordem de um superávit real de seção. Para mim, faz mais sentido que você inclua apenas cada uma das partes do modelo usando get_template_part() .

O que eu estou faltando / qual é o benefício de fazê-lo?

Solutions Collecting From Web of "Por que os modelos Woocommerce usam ganchos em vez de get_template_part"

Não estou familiarizado com o Woocommerce, mas em suma, get_template_part() procura apenas partes de modelo em temas pai e filho, e não em plugins.

Se você olhar para o código-fonte, get_template_part() usa locate_template que possui o seguinte código-fonte ( que é onde a parte do modelo real é pesquisada )

 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; } 

Como você pode ver, locate_template procure apenas modelos em temas pai e filhos

É por isso que você não pode usar get_template_part() em um plugin ou usá-lo para chamar peças de modelo para um tema de um plugin.

EDITAR dos comentários de @MarkKaplun

Além da maneira geral em que get_template_part() funciona na recuperação de peças de modelo, Mark também apontou um ponto válido nos comentários sobre o uso do Woocommerce

Eu diria isso de forma diferente – uma vez que o WC é um plugin, ele não pode ter nenhum pressuposto sobre quais temas estão usando e quais partes eles têm sem limitar sua adoção, e o WC deve funcionar com qualquer tema.

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

.

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

O WooCommerce foi lançado em setembro de 2011. No entanto, não foi codificado em um dia, eles devem ter começado alguns meses antes.

Na época, o WP era apenas post 3.0 (grande atualização, btw) e nada sobre a atualização de WP, temas ou plugins estava funcionando tão rápido quanto agora.

Além disso, add_action() e add_filter() são a base do conceito WP. Você pode ter certeza de que nunca se tornará obsoleto. É o caminho a seguir quando você codifica algo tão grande quanto o WooCommerce.

Como você provavelmente sabe, o WC fornece um sistema de modelos .