WordPress 테마에 조건부 논리를 추가하는 방법

게시 됨: 2021-02-25

WordPress로 웹사이트를 구축하면 디자인과 기능 모두에서 할 수 있는 일에 큰 유연성을 제공합니다. 그리고 테마 개발에 대해 더 깊이 들어가면 특별한 것을 위해 특정 페이지, 카테고리 또는 게시물 유형을 타겟팅해야 하는 경우가 있음을 알게 될 것입니다. 조건부 논리를 사용하면 작업이 훨씬 쉬워집니다.

조건부 논리는 프로그래밍 언어(이 경우 PHP)의 강력한 기능입니다. 본질적으로 코드를 사용하여 특정 조건이 존재하는지 확인한 다음 해당 조건이 충족되면 특정 작업을 수행할 수 있습니다. 이에 대한 간단한 예는 사용자가 현재 우리 사이트의 홈 페이지에 있는지 확인하는 것입니다. 조건부 논리를 사용하여 해당 상황에서 슬라이더 또는 기타 특수 콘텐츠를 로드하도록 선택할 수 있습니다.

WordPress와 관련하여 모든 종류의 시나리오를 테스트할 수 있는 유용한 조건부 태그가 소프트웨어에 많이 내장되어 있습니다. 문서화되어 있어 사이트에 더 높은 수준의 기능을 제공할 수 있습니다.

오늘은 일반적으로 사용되는 몇 가지 조건부 태그와 이를 자신의 사이트에 구현하는 방법을 살펴보겠습니다.

조건부 태그 사용에 대한 참고 사항

조건부 태그는 PHP 코드의 일부이며 사이트의 활성 테마로 이동해야 합니다. 테마 내에서 조건부 논리를 사용할 수 있는 곳이 많이 있습니다.

아직 하지 않았다면 테마 파일 작동 방식에 대한 설명을 위해 WordPress 템플릿 계층 구조에 익숙해지는 것이 좋습니다.

그리고 라이브 사이트에서 새 코드를 구현하기 전에 먼저 테스트할 개발(스테이징) 환경을 설정하는 것이 가장 좋습니다. PHP로 한 번의 잘못된 동작으로 인해 사이트에 "죽음의 흰색 화면"이 나타날 수 있음을 기억하십시오. 따라서 라이브 사이트에서 작업하기 전에 테스트에 세심한 주의를 기울이십시오.

is_home()

이것은 개발자들 사이에서 큰 혼란을 야기합니다. 태그를 보면 is_home() 이 사이트의 홈페이지를 확인하는 데 사용된다고 가정합니다. 그렇지 않습니다.

실제로 WordPress 대시보드 내부의 설정 > 읽기에서 설정한 게시물 페이지로 할당된 페이지를 찾습니다. 기본적으로 WordPress는 홈페이지를 사용하여 게시물을 나열하지만 대부분의 사이트는 대신 정적 홈페이지를 사용하는 경향이 있습니다.

예를 들어, "Blog"라는 페이지를 게시물 페이지로 지정 is_home() 이 찾는 페이지입니다.

 <?php // If this the Posts page, display a message. if ( is_home() ): echo '<h2>Thanks for visiting our blog!</h2>'; endif; ?>

is_front_page()

반대로 is_front_page() 는 정적 여부에 관계없이 사이트의 홈으로 설정된 페이지를 찾습니다. 확실히, 이것은 당신이 자신만의 테마를 만드는 법을 배울 때 세상에서 가장 명백한 것이 아닙니다. 그러나 어떤 태그를 사용할지 아는 것이 중요합니다.

이 특정 태그의 좋은 점은 나중에 다른 페이지를 홈페이지로 지정하더라도 여전히 올바른 위치를 타겟팅할 수 있다는 것입니다. 페이지를 타겟팅하는 보다 명확한 방법이 있지만 이 방법을 사용하면 변경 사항이 발생할 경우 계속해서 보호할 수 있습니다.

 <?php // If this is the home page, show a special message. if ( is_front_page() ) { ?> <h1>Welcome</h1> <?php // Otherwise, show the page title. } else { ?> <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?> <?php } ?>

is_single() 및 is_page()

이러한 각 태그는 이중 기능을 수행합니다. is_single() 은 현재 URL이 게시물인지 확인합니다. 표준 블로그 게시물, 첨부 파일 또는 사용자 정의 게시물 유형에 속할 수 있습니다.

마찬가지로 is_page() 는 현재 URL이 페이지인 경우 true를 반환합니다. 기본적으로 두 태그 모두 페이지 또는 게시물의 범주에 속하는 모든 콘텐츠를 대상으로 합니다. 이것은 많은 조건부 태그 사이의 공통 스레드입니다.

 <?php // Target all posts. if ( is_single() ): echo 'You are on a single post.'; endif; // Target all pages. if ( is_page() ): echo 'This is a page'; endif; ?>

그러나 이러한 태그를 활용하여 ID 또는 슬러그를 추가하여 특정 게시물이나 페이지를 타겟팅할 수도 있습니다.

 <?php // Target About Us if ( is_page( 'about-us' ) ): ?> <a href="#"></a> <?php endif; ?>

배열을 사용하면 여러 콘텐츠를 대상으로 지정할 수 있습니다.

 <?php // Target About Us and Contact Us pages. if ( is_page( array('about-us', 'contact-us') ) ): ?> <a href="#"></a> <?php endif; ?>

is_tax() 및 has_term()

분류는 사이트에서 콘텐츠가 구성되는 방식에 큰 역할을 합니다. 가장 일반적인 두 가지는 자체 조건부 태그가 있는 카테고리와 태그입니다. 그러나 WordPress를 사용하면 자체 분류를 만들 수도 있습니다.

예를 들어 사이트에 음악 리뷰가 포함된 경우 "장르"라는 분류가 있을 수 있습니다. 거기에서 "록", "힙합" 및 "재즈"와 같은 해당 분류 내의 특정 음악 장르를 나열할 수 있습니다.

is_tax() 는 분류 아카이브 페이지를 대상으로 합니다. 우리의 음악 리뷰 예제를 계속 사용하면 이 태그는 각 특정 장르에 대한 아카이브 페이지에 있을 때 실행(적용)됩니다.

 <?php // Display a message on our Genre archive pages. if (is_tax('genre','rock','hip-hop','jazz') ): echo '<h2>This is a genre archive. Enjoy!</h2>'; endif; ?>

has_term() 은 속한 분류에 따라 현재 게시물을 대상으로 지정하는 데 사용됩니다. 이것은 예를 들어 사이트의 각 음악 장르의 게시물에 대해 특별한 그래픽을 추가하려는 경우에 유용합니다.

 <?php // Show an image for the Rock genre. if (has_term('rock','genre') ): ?> <?php endif; ?>

is_page_template()

테마의 템플릿 계층 구조에 익숙해지면 고유한 사용자 지정 페이지 템플릿을 만들 수 있습니다. is_page_template() 을 사용하면 사용 중인 현재 페이지 템플릿을 대상으로 지정할 수 있습니다(사용자 지정 여부에 관계없이). 페이지 템플릿이 전혀 사용되고 있는지 확인하거나 특정 템플릿을 찾을 수 있습니다.

그러나 특정 페이지 템플릿을 찾을 때는 주의해야 합니다. 이 태그는 파일 이름이 있는지 확인하기 때문에 해당 템플릿의 이름이 변경되면 조건부가 작동을 멈출 수 있습니다. 파일 이름 변경 사항을 반영하려면 코드를 업데이트해야 합니다.

 <?php // Add a search form to the Services page template. if (is_page_template('services.php') ): ?> <?php get_search_form(); ?> <?php endif; ?>

모든 조건 충족

이것은 조건부 논리를 사용하는 방법에 대한 간략한 소개였으나 더 많은 것을 배우고자 하는 욕구를 불러일으킵니다.

조건문을 마스터하면 다른 방법으로는 거의 불가능한 방식으로 사이트를 사용자 정의할 수 있습니다.

CMS 활용의 모든 이점을 활용하면서 테마의 모양과 레이아웃을 세밀하게 제어할 수 있습니다.