WordPress에서 조건부 태그를 사용하는 방법

게시 됨: 2020-06-09

WordPress에서 내가 가장 좋아하는 것 중 하나는 개발자로서의 작업을 크게 단순화하는 많은 기능이 포함되어 있다는 것입니다. 예를 들어, HTML 태그 속성에 안전하게 추가될 수 있도록 텍스트를 이스케이프 처리하는 esc_html 또는 HTML 페이지에 안전하게 포함될 수 있도록 텍스트를 이스케이프하는 esc_attr 과 같은 함수를 고려하십시오. 또는 사용자로부터 수신한 데이터를 삭제해야 하는 몇 가지 기능( sanitize_text_field , sanitize_textarea_field 또는 sanitize_email )을 살펴보세요. 이러한 잘 정의된 기능에 너무 익숙해져서 WordPress 영역 외부에서 무엇이든 개발해야 하고 더 이상 사용할 수 없음을 발견하면 이 기능이 정말 그리워집니다!

WordPress에서 개발할 때 사용할 수 있는 기능 모음은 엄청나게 많습니다. 그리고 우리가 그들과 더 친숙할수록 고품질 코드를 작성하기가 더 쉽습니다.

오늘 저는 WordPress의 조건부 태그 에 대해 말씀드리고자 합니다. 조건부 태그가 무엇인지, 어떻게 사용하는지, 오해의 소지가 있는 것은 무엇이며, 왜 그렇게 유용한지입니다. 플러그인 또는 테마 개발자이고 아직 모르는 경우 이 게시물을 놓치지 마세요.

WordPress의 조건부 태그는 무엇입니까?

조건부 태그는 결과가 부울 값(즉, true 또는 false )인 WordPress에 정의된 함수입니다. 이것들은 우리가 렌더링하려는 콘텐츠에 따라 조건부 결정을 내리기 위해 플러그인과 테마 모두에서 사용할 수 있는 기능입니다.

조건부 태그를 훌륭하게 만드는 것은 일반적으로 해당 이름이 자명하고 이해하기 쉬운 코드를 생성한다는 것입니다. 예를 들어 플러그인에서 조건부 태그 is_sticky 를 사용하는 경우 WordPress 루프 내부에서 고정 게시물을 처리하는 경우 분명히 true 를 반환합니다. 그 의미에 대해 의심의 여지가 없습니다.

몇 가지 예를 시작하기 전에 조건부 태그는 방문자가 요청한 콘텐츠를 WordPress가 확인한 후에만 사용할 수 있다는 점에 유의하십시오. 이전에 사용하려고 하면 결과가 항상 false 가 됩니다. 즉, posts_selection 작업이 실행된 후에만 사용할 수 있습니다.

가장 일반적인 조건부 태그

워드프레스의 대부분의 조건부 태그는 is_ 로 시작합니다. 왜냐하면 “is blah blah?”와 같은 질문에 대한 대답이기 때문입니다. 부울 값: "예" 또는 "아니요"입니다. 그러나 불행하게도 이 기준이 항상 지켜지는 것은 아닙니다(아래에서 살펴보겠지만).

WordPress에는 필요할 때 익숙해질 수 있는 조건부 태그가 많이 있습니다. 그러나 매우 흔한 것들이 꽤 많이 있으며 빨리 알수록 더 좋습니다. 그럼 다음과 같이 자세히 살펴보겠습니다.

  • is_single . 현재 요소가 WordPress 게시물인지 또는 다른 사용자 정의 게시물 유형(예: WooCommerce 제품 )의 인스턴스인지 확인합니다.
  • is_page . 현재 요소가 WordPress 페이지인지 확인합니다.
  • is_attachment . 현재 요소가 첨부 파일인지 여부를 확인합니다. 첨부 파일은 이미지, 비디오, 파일 등과 같이 미디어 라이브러리에 업로드하는 파일입니다.
  • is_singular . 이전 세 가지 함수 중 하나라도 true 인지 확인합니다. 즉, 현재 요소가 게시물, 페이지, 첨부 파일 또는 기타 게시물 유형인지 확인합니다.
  • comments_open . 방문자가 현재 요소에 댓글을 달 수 있는 경우 true 를 반환합니다. 보다? 여기에 조건부 태그가 is_ 로 시작하지 않는 예가 있습니다.
  • is_category . 현재 카테고리 아카이브 페이지를 보고 있는지 확인합니다.
  • in_category . 현재 게시물이 지정된 카테고리에 있으면 true를 반환합니다.
  • is_tag . 현재 태그 아카이브 페이지를 보고 있는지 확인합니다.
  • has_tag . 지정된 태그를 사용하여 현재 게시물에 태그가 지정되었는지 확인합니다.
  • is_main_query . WordPress의 메인 루프에 있는지 확인합니다.

오해의 소지가 있는 조건부 태그가 있다는 것을 알고 계셨습니까?

조건부 태그가 평가하는 것처럼 보이는 것과 실제로 평가 하는 것이 다르기 때문에 혼동을 일으킬 수 있는 이름이 조건부 태그인 경우가 있습니다.

  • is_admin . 이 기능은 현재 사용자가 관리자인지 확인하는 기능이라고 생각할 수 있습니다. 잘못된! 그것은 우리가 WordPress 대시보드 내의 페이지에 있는지(그러면 결과가 true 가 될 것인지) 또는 프론트 엔드에 있는지(즉, false ) 확인합니다.
  • is_home . 이 기능은 현재 페이지가 귀하의 홈페이지인지 확인하는 기능이라고 생각했습니다. 예를 들어, 우리 웹사이트에서는 https://neliosoftware.com 입니다. 하지만 불행히도 그렇지 않습니다. WordPress는 블로깅 플랫폼으로 탄생했으며 이것이 "레거시 코드"의 한 예라고 생각합니다. is_home 은 현재 페이지가 블로그 페이지인지 확인하는 조건부 함수입니다. 따라서 예를 들어 WordPress의 기본 설정을 사용하는 경우 방문자가 홈 페이지( https://yourweb.com )에 있을 때 is_home 은 실제로 true 를 반환합니다. 그 페이지에는 최신 블로그 게시물이 표시되기 때문입니다. 그러나 블로그 페이지를 다른 것으로 설정하면(예: https://yourweb.com/blog ) 방문자가 https://yourweb.com/blog 를 요청하면 is_hometrue 이고 그렇지 않으면 false 가 됩니다.
  • is_front_page . 그리고 이것은 방문자가 "홈 페이지"에 있을 때 알려주는 조건부 태그입니다.
  • is_dynamic_sidebar . 이 함수는 테마에 하나 이상의 위젯 사이드바가 있는지 확인하고, 있는 경우 해당 사이드바 중 하나 이상이 비어 ​​있지 않으면 true 를 반환합니다.

조건부 태그 매개변수화

대부분의 조건부 태그는 매개변수 없이 호출할 수 있는 함수이지만 대부분이 매개변수를 지원합니다. 이를 사용하면 현재 게시물이 충족해야 하는 기준에 대해 더 구체적으로 설명할 수 있습니다. 그리고 그들은 이것을 상당히 논리적인 방식으로 수행합니다.

우리가 사용하는 특정 기능에 따라 현재 요소에 특정 ID 또는 특정 슬러그가 있는지, 특정 게시물 유형의 인스턴스인지 또는 특정 제목이 있는지 여부를 확인하고 싶을 수 있습니다. 예를 들어:

  • is_singular( 'product' ) 는 현재 요소가 product 인지 확인합니다.
  • is_page( 'Contact Us' ) 는 현재 페이지의 제목이 "Contact Us"인지 확인합니다. 이 함수는 다양한 유형의 인수를 허용하며 제공하는 항목에 따라 한 가지 또는 다른 것을 확인합니다. 예를 들어 현재 요소에 특정 ID가 있는지, 특정 제목이나 슬러그가 있는지 확인할 수 있습니다. 꽤 깔끔하죠? 목록을 매개변수로 사용할 수도 있습니다!
  • is_single( [ 5, 10, 11 ] ) 은 현재 요소의 ID가 5, 10 또는 11인지 확인합니다. is_page 와 매우 유사하지만 이전에 말했듯이 페이지 이외의 게시물에서 작동합니다.

조건부 태그를 사용하는 방법

조건부 태그가 유용할 수 있는 몇 가지 예를 살펴보겠습니다.

템플릿 사용자 정의

아마 예상하셨겠지만 조건부 태그는 테마에서 분명히 유용합니다. 테마가 주어진 시간에 보고 있는 콘텐츠 유형에 따라 하나 또는 다른 정보를 표시하도록 하려면(그리고 이것이 우리가 자주 하고자 하는 것입니다) 조건부 태그가 동맹입니다.

 <?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...

이를 통해 다양한 유형의 콘텐츠에 동일한 템플릿을 사용하고 조건부 태그로 각 콘텐츠를 사용자 지정할 수 있습니다.

조건부로 자산 대기열에 넣기

그러나 조건부 태그는 플러그인 개발자에게도 매우 유용합니다. 특히 조건부 태그에서 얻은 결과에 따라 플러그인의 일부를 조건부로 로드하는 데 도움이 됩니다.

예를 들어, 블로그 게시물에 어떤 종류의 기능을 추가하는 플러그인을 개발 중이라고 상상해보십시오. 이 기능을 사용하려면 스크립트와 스타일시트를 프런트 엔드에 추가해야 한다고 가정합니다. WordPress에서 스크립트와 스타일을 대기열에 추가하려면 wp_enqueue_scripts 라는 필터가 있습니다.

 function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

이전 스니펫의 문제점은 방문자가 무엇을 요청했는지에 관계없이 항상 자산을 대기열에 넣는다는 것입니다. wp_enqueue_scripts 가 실행될 때마다(모든 프런트 엔드 요청에서 실행됨) 콜백 함수가 호출되고 스크립트와 스타일시트가 추가됩니다. 그러나 우리는 우리의 기능이 블로그 게시물에만 영향을 미친다고 말했습니다. 그래서… 이러한 자산을 항상 대기열에 넣어야 합니까? 당연히 아니지! 적절한 조건부 태그를 사용하여 이를 개선할 수 있습니다.

 function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

요약하자면

WordPress의 조건부 태그를 사용하면 콘텐츠의 다양한 기준을 테스트할 수 있으므로 이를 기반으로 어떤 일이 일어날지 조정할 수 있습니다. 극단적인 단순성에도 불구하고 코드를 더 이해하기 쉽고 효율적으로 만드는 매우 유용한 기능입니다.

오늘 배운 것이 있기를 바랍니다. 언제나처럼 질문이나 의견이 있는 경우 아래 의견 섹션에 알려주십시오.

Unsplash에서 Justin Luebke의 추천 이미지.