get_template_part와 테마의 조치 후크


15

이 두 가지 모두 최종 사용자가 테마 파일을 실제로 편집하지 않고 (자식 테마를 통해) 테마를 수정할 수있는 기회를 제공합니다.

내 질문은 다른 방법보다 선호되는 방법입니다.

예를 들어, 제가 지금 일하고있는 주제를 생각해보십시오. 후크의 템플릿 부분으로 갈 것인지 결정하려고합니다.

<?php get_template_part('before_sitecontainer' ); ?>
<div id="sitecontainer" class="sitecontainer" <?php //closed in footer ?>>

<?php get_template_part( 'before_topcontainer' ); ?>
<div id="topcontainer ">

    <?php get_template_part( 'before_topedge_navigation' ); ?>
    <?php get_template_part( 'topedge_navigation' ); ?>

    <?php get_template_part( 'before_site_header' ); ?>
    <?php get_template_part( 'site_header' ); ?>

    <?php get_template_part( 'before_second_navigation' ); ?>
    <?php get_template_part( 'second_navigation' ); ?>

    <?php get_template_part( 'after_second_navigation' ); ?>

</div><!-- end topcontainer div -->
<?php get_template_part( 'after_topcontainer' ); ?>

위의 내용을 통해 테마 사용자는 하위 테마 폴더에 적절하게 이름이 지정된 파일을 작성하고 동일한 방법으로 이전 / 이후 각 섹션 이전 / 이후에 새 코드를 추가하여 기존 코드의 모든 섹션을 대체 할 수 있습니다. 파트 파일은 상위 테마에 전혀 존재하지 않으며 단순히 코드를 삽입 할 수 있도록하기위한 것입니다.이 방법에서는이를 수행하기 위해 후크 / 필터를 이해하지 않아도됩니다.

물론 후크와 필터를 사용하여 동일한 결과를 얻을 수 있습니다.

대신 후크 / 필터를 사용하면 이점이 있습니까? 이것을 사용할 대상 고객을 염두에 두는 것은 코드에 정통 하지 않습니다 . 나는 그들이 템플릿 방법을 사용하기 위해 따를 수있는 상대적으로 기본적인 지시를 줄 수 있지만 악마를 고리와 거의 혼동하지 않을 것입니다.

또는 동일한 주제 내에서 하나가 다른 것보다 더 나은 상황이 있습니까?

답변:


8

나는 더 유연하기 때문에 훅을 선호합니다. 테마의 functions.php파일뿐만 아니라 플러그인에서도 훅을 연결할 수 있습니다. 테마에 대부분 레이아웃이 포함되도록 플러그인에 많은 논리를 넣으려고합니다.

조치 후크를 사용하는 경우 get_template_part() 해당 후크 핸들러에서 계속 사용할 수 있습니다 . 이것은 당신에게 두 세계의 최고를 제공합니다. get_template_part()코딩에 대한 경험이 많지 않은 사람들이 추가 파일을 추가하고 원하지 않는 경우 다른 사람이이 후크를 제거 할 수 있도록 을 호출하는 기본 후크를 만들 수도 있습니다.

성능과 관련하여 : get_template_part()( inlocate_template() )을 file_exists()1, 2 또는 4 번 사용합니다 (호출 방법에 따라 다름). 그것은 나타납니다 file_exists()매우 빠르고 , 그리고 PHP에서 캐싱을 사용합니다 심지어 OS에서 어쩌면합니다. 따라서 아마도 문제가되지 않습니다.


말이 되네요 내 디자인의 일부는 가장 일반적인 사용 상황에서 플러그인을 사용하지 않고 원하는 플러그인을 사용할 수있는 기능을 유지하는 것입니다. 내 대상 클라이언트는 WordPress 또는 플러그인에 대해 거의 알지 못하고 나쁜 플러그인 (IMO의 주요 약점)에서 좋은 플러그인을 말할 자격이 없으며 여러 소프트웨어 조각을 업데이트하고 관리하지 않아도됩니다. 따라서 사용하기 쉽고 유지 관리하기 쉬우 며 원 스톱 솔루션이라는 원하는 기능을 제공하기 위해 많은 기능을 테마로 바로 빌드해야합니다.
Ashley G

4

가장 큰 차이점은 가독성이라고 말합니다. 잘 이름이 지정된 템플릿 부분이 여러 개 있으면 어떤 일이 일어나고 있는지 쉽게 파악할 수 있습니다. 후크 만 보이면 나머지 테마를 검색하여 후크에 첨부 된 내용을 설정해야합니다.


1
예, 그것은 말이되며 예제 코드로 달성하려는 것의 일부입니다.
Ashley G

4

자식 테마의 후크에서 기능을 제거하는 것은 상대적으로 쉽지만 원하지 않는 부모 템플릿을 무시하게 만드는 것은 훨씬 어렵습니다.

본질적으로 후크 작업은 PHP 측에 더 가깝고 템플릿 작업은 HTML 측에 더 가깝습니다. 나는 매우 후크 지향적 인 하이브리드 부모 테마를 사용합니다. 부모의 템플릿을 제거해야 할 때까지 행복합니다.

기술에 정통하지 않은 사용자에게는 아주 좋은 옵션이 아닙니다. 어쨌든 그들은 왜 그런 테마 내부를 망쳐 놓아야합니까?

PS는 또한 성능 문제를 지적합니다. 후크가있는 것은 메모리에서 발생하며 템플릿이있는 것은 많은 디스크 조회가 필요합니다. 특히 당신이 당신의 예와 같은 것을 쓰고 있다면.

PPS는 모든 사람의 선호도는 아니지만 처음부터 부모 테마를 작성하는 대신 기존 부모 테마를 사용하지 않고 사용자에게 간단한 자식 테마를 제공하는 이유는 무엇입니까?


부모 템플릿을 무시하는 것은 빈 템플릿 파일을 만들어서 바꾸는 것만 큼 쉽습니다. 기술에 정통하지 않은 사용자를위한 후크 (및 PHP)를 사용하는 것보다 훨씬 쉽습니다. 경험이 풍부한 사람에게는 훨씬 쉬울 것입니다. 이유에 관해서는 항상 커스터마이징하려는 사람들이 있으며, 당신도 인정합니다. 내가 테마를 만드는 이유에 관해서는 이것이 제가 사업을 추진하고 싶은 방향입니다. 다른 누군가를 중심으로 비즈니스를 구축하는 것은 미래에 대한 증거가 될 수 없습니다. IMO 대부분의 기존 테마는 원하는 것이 많기 때문입니다. 나는 더 잘할 수 있다고 생각합니다.
Ashley G

그러나 성능 문제에 대한 좋은 지적. 워드 프레스가 get_template_part와 함께 작동하도록 설계되었지만 성능에 크게 영향을 미치지는 않을 것이라고 생각했을 것입니다. 누구든지 이것에 대한 벤치 마크가 있습니까?
Ashley G

템플릿 부분을 무시한다는 의미를 알 수 있습니다. 내가 생각한 것만 큼 쉽지
Ashley G

실제로 폴더의 루트에있는 빈 템플릿 파일을 하위 폴더에 배치하는 것만 큼 쉽습니다. 템플릿 파일이 부모 / 자식 테마 폴더의 하위 폴더에있을 때 문제가 발생하는 경우
Ashley G

실제로 하위 폴더도 문제가되지 않습니다. 방금 폴더 이름이 잘못되었습니다 (LOL이 너무 늦었습니다.). 템플릿 부분을 덮어 쓰려면 부모와 같은 경로에 같은 이름의 파일 만 필요합니다
Ashley G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.