WordPress에서 독점 사용자 정의 분류를 만드는 방법

게시 됨: 2022-03-11

가장 강력한 오픈 소스 블로깅 및 콘텐츠 관리 시스템 중 하나인 WordPress는 인터웹의 주요 부분을 강화하는 데 사용되고 있습니다. 모든 웹사이트의 최대 4분의 1이 워드프레스를 실행하고 있으며 워드프레스 개발 서비스에 대한 수요는 부족하지 않습니다.

다른 많은 CMS와 달리 WordPress는 유연성과 사용자 정의 기능으로 많은 사람들에게 사랑 받고 있습니다. WordPress의 핵심 기능 중 하나인 분류를 사용하면 필요한 방식으로 콘텐츠를 구성할 수 있습니다. 몇 가지 기본 분류와 함께 기본 제공되지만 WordPress를 사용하면 원하는 만큼 사용자 정의 분류를 추가할 수 있습니다.

그러나 분류법이 원하는 방식으로 정확하게 작동하도록 하려면 문서화되지 않은 접근 방식을 사용하는 것이 필요할 수 있습니다.

다양한 WordPress 분류 옵션의 그래픽 표현

이 기사에서는 태그보다 훨씬 더 카테고리처럼 작동하는 WordPress의 독점 사용자 정의 분류를 정의하여 기본적으로 할 수 있는 것보다 훨씬 더 엄격하게 게시물을 분류할 수 있는 방법을 배웁니다.

분류법이란?

WordPress 코덱스에 따르면:

분류는 사물을 함께 그룹화하는 방법입니다.

예를 들어, 여러 유형의 과일을 다양한 특성에 따라 그룹화한 다음 해당 그룹에 이름을 지정할 수 있습니다.

WordPress에서 분류는 게시물, 페이지, 심지어 사용자 정의 게시물 유형을 다른 그룹으로 그룹화하는 데 사용됩니다.

분류 체계에서 여러 그룹의 이름을 용어 라고 합니다. 예를 들어 과일을 가져오고 색상에 따라 그룹화하는 방법을 살펴보십시오. 이 경우 다른 색상의 이름이 용어가 됩니다.

기본적으로 WordPress에는 category , tag , link categorypost format 의 4가지 분류가 내장되어 있습니다. 여기에서 이러한 기본 분류에 대해 자세히 알아볼 수 있습니다.

이러한 기본 제공 분류법 중에서 카테고리와 태그는 매우 유사하지만 한 가지 중요한 차이점이 있습니다. 카테고리는 배타적 분류법(즉, 각 게시물에 대해 최대 하나의 범주를 선택할 수 있음)인 반면 각 게시물에는 여러 태그를 할당할 수 있습니다.

또한 카테고리는 일반적으로 미리 정의되지만 태그는 이동하면서 정의할 수 있습니다.

사용자 정의 분류 정의

register_taxonomy() 함수를 사용하여 사용자 정의 분류를 정의할 수 있습니다. 여기에서 기능에 대해 자세히 알아볼 수 있습니다.

이 기능이 어떻게 작동하는지 보기 위해 풍경 사진이 있는 게시물에 대한 사용자 정의 분류를 정의해 보겠습니다.

 function view_init() { register_taxonomy( 'view', 'post', array( 'label' => __( 'View' ), 'capabilities' => array( 'assign_terms' => 'edit_guides', 'edit_terms' => 'publish_guides' ) ) ); } add_action( 'init', 'view_init' );

위의 스니펫에서 view 라는 게시물에 대한 새로운 분류를 정의하고 있습니다.

사진에 있는 보기의 종류나 특성(예: 산, 호수 또는 숲)을 기반으로 사진을 분류하는 데 이 분류가 사용된다고 생각할 수 있습니다.

항상 그렇듯이 이 카테고리의 특정 용어에 속하는 게시물은 /view/{view_name} 아래에 표시됩니다.

위 스니펫의 기능 줄은 선택 사항입니다. 그것이 없으면 WordPress는 게시물과 동일한 사용자에게 기본 기능을 제공합니다. 위에 표시된 것처럼 사용자 정의 "edit_guides" 기능이 있는 모든 사용자는 분류를 게시물에 할당하고 사용자 정의 "publish_guides" 기능을 가진 모든 사용자는 새 분류 항목을 생성할 수 있습니다.

공식 문서에 따르면 다음과 같은 네 가지 기능을 정의할 수 있습니다.

분류 기능에는 assignterms , editterms , manageterms (관리 탐색에 분류 표시) 및 deleteterms 있습니다.

분류법 사용 방법

코드 내에서 wp_set_object_terms() 함수를 사용하여 분류를 사용하여 객체에 용어를 추가할 수 있습니다. the_terms() 함수를 사용하여 기존 용어를 ​​나열할 수 있습니다. 또한 wp_tag_cloud() 함수를 사용하여 사용자 정의 분류에 대한 용어 클라우드를 생성할 수 있습니다. 여기에서 이러한 기능에 대해 자세히 알아볼 수 있습니다.

UI 측면에서 WordPress는 모든 분류에 대한 게시물에 새로운 메타 상자를 만듭니다. 메타 상자는 하나 이상의 용어를 게시물에 연결할 수 있는 태그 메타 상자와 유사합니다. 이것이 WordPress가 기본적으로 수행하는 작업이며 분류 체계를 배타적으로 만들어 변경할 수 있는 것입니다. 사용자 정의 분류 체계가 카테고리 분류 체계처럼 작동하도록 합니다.

분류법에 대한 배타성 강제

register_taxonomy() 메서드를 사용하여 사용자 정의 분류를 만들 때 WordPress는 게시물 편집 페이지에 여러 항목 선택이 있는 메타 상자를 추가합니다.

이 메타 상자를 사용하여 사용자는 기존(이미 사용된) 용어를 원하는 수만큼 선택할 수 있으며 텍스트 상자를 사용하여 새 용어를 추가할 수도 있습니다.

각 게시물이 미리 정의된 범주 집합에서 최대 하나의 범주에 속하는 범주와 같은 분류를 만들려면 WordPress를 약간 조정하면 됩니다.

  • WordPress에서 만든 기본 메타 상자를 숨깁니다.
  • 단일 항목 선택에 대한 제어를 제공할 포스트 편집 페이지에 사용자 정의 메타 상자를 만듭니다.
  • 게시물 저장 시 분류 값을 저장합니다.

각 단계를 살펴보겠습니다.

WordPress에서 만든 기본 메타 상자 숨기기

이를 위해 register_taxonomy 를 호출할 때 show_in_quick_editmeta_box_cb 옵션을 false 로 설정해야 합니다.

사용 가능한 용어 집합에 항목을 추가할 수 있는 사용자 지정 분류 메타 상자의 스크린샷

첫 번째 옵션은 빠른/대량 편집 패널에서 분류 체계를 숨기고 두 번째 옵션은 사후 편집 페이지에서 분류를 숨깁니다.

 register_taxonomy( 'custom_taxonomy', 'post', array( 'labels' => array( 'name' => 'Custom Exclusive Taxonomy' ), 'show_in_quick_edit' => false, 'meta_box_cb' => false ));

기본 메타 상자가 숨겨져 있으면 분류 관리 페이지를 통해 분류의 사용 가능한 용어 집합에 항목을 추가할 수 있습니다.

여러 라디오 버튼이 있는 Custom Exclusive Taxonomy라는 메타 상자의 스크린샷

게시물 편집 페이지에서 사용자 정의 메타 상자 만들기

사용자 정의 메타 상자를 만들기 위해 add_meta_boxes WordPress 후크를 사용할 수 있습니다. 여기에서 후크에 대해 자세히 알아볼 수 있습니다.

 add_action('add_meta_boxes', 'add_custom_meta_box'); function add_custom_meta_box(){ add_meta_box( 'taxonomy_box', __('Custom Exclusive Taxonomy'), 'fill_custom_meta_box_content', 'post' ,'side'); }

다음 인수를 사용하여 add_meta_box 메서드를 호출합니다.

  • taxonomy_box – 메타 상자의 ID
  • __('Custom Exclusive Taxonomy') – 메타 상자의 제목
  • fill_custom_meta_box_content – ​​메타 박스의 내용을 채우는 데 사용되는 함수
  • post – 메타 상자가 게시물 편집 페이지에 나타나야 함을 나타냅니다.
  • side - 메타박스를 삽입할 위치를 나타냅니다.

taxonomy_box 를 ID로 어떻게 지정했는지 주목하세요. 그러나 상자에 들어갈 내용을 정의할 수 있는 것은 세 번째 매개변수의 함수입니다.

이제 fill_custom_meta_box_content 함수를 구현합니다.

 <?php function fill_custom_meta_box_content( $post ) { $terms = get_terms( array( 'taxonomy' => 'custom_taxonomy', 'hide_empty' => false // Retrieve all terms )); // We assume that there is a single category $currentTaxonomyValue = get_the_terms($post->ID, 'custom_taxonomy')[0]; ?> <p>Choose taxonomy value</p> <p> <?php foreach($terms as $term): ?> <input type="radio" name="custom_taxonomy" value="<?php echo $term->term_id;?>"<?php if($term->term_id==$currentTaxonomyValue->term_id) echo "checked"; ?>> <label for="taxonomy_term_<?php echo $term->term_id;?>"><?php echo $term->name; ?></label> </input><br/> <?php endforeach; ?> </p> <?php }

여기에서 먼저 분류의 모든 용어(즉, 기존 값)를 검색합니다. 이것을 사용하여 라디오 버튼 컨트롤 목록을 표시합니다.

다음으로 get_the_terms() 함수를 사용하여 현재 선택된 분류 용어를 검색합니다. 각 라디오 버튼을 선택하려면 이 항목이 필요합니다.

이 함수는 배열을 반환합니다. 이는 기본적으로 게시물에 연결된 용어가 얼마든지 있을 수 있기 때문입니다. 우리의 가정에 따르면 게시물에는 최대 하나의 용어가 있으므로 첫 번째 배열 요소에 액세스합니다. (배열이 비어 있어도 괜찮습니다. 현재 값으로 null 을 가져오고 라디오 버튼이 선택되지 않습니다.)

HTML 생성 코드는 라디오 버튼의 이름으로 custom_taxonomy 를 사용하고 값으로 해당 용어 ID를 사용합니다. 라디오 버튼 ID 속성은 레이블 태그에 연결하는 데만 사용됩니다. 결과적으로 다음과 같은 사용자 정의 메타 상자를 얻습니다.

이제 WordPress 대시보드 사이드바에서 사용할 수 있는 Custom Exclusive Taxonomy의 "새 태그 추가" 기능 스크린샷

게시물 저장 시 분류 값 저장

마지막으로 게시물을 저장할 때 분류 값을 유지해야 합니다. 이를 위해 save_post 후크를 사용할 수 있습니다.

 add_action('save_post', 'save_custom_taxonomy'); function save_custom_taxonomy($post_id){ if ( isset( $_REQUEST['custom_taxonomy'] ) ) wp_set_object_terms($post_id, (int)sanitize_text_field( $_POST['custom_taxonomy'] ), 'custom_taxonomy'); }

그리고 그게 다야! 우리는 끝났습니다.

이제 기본 제공 범주 분류법처럼 작동하는 사용자 정의 분류법을 정의하는 방법을 알게 되었습니다.

참고: WordPress는 사용자 지정 분류에 대한 독점성을 더 쉽게 토글할 수 있도록 기능 요청을 수락했습니다. 그러나 티켓은 한동안 많은 활동을 보지 못했습니다.

마무리

분류는 WordPress에서 매우 강력하고 유용한 기능입니다. 기본적으로 게시물을 엄격하게 분류하는 기능은 없지만 WordPress의 거의 모든 것과 마찬가지로 분류 및 관련 기능은 매우 사용자 지정할 수 있습니다. 이를 통해 몇 단계로 자주 필요한 기능을 추가할 수 있습니다.

여기에 소개된 접근 방식은 분류 용어 선택을 위해 편집 후 페이지에서 훨씬 더 맞춤화된 UI를 만드는 데 사용할 수도 있습니다.

배타적 사용자 정의 분류법 정의에 대한 이 빠른 자습서가 유용했기를 바랍니다!