WordPress 사용자 정의 게시물 유형을 수동으로 생성

게시 됨: 2020-12-15

WordPress Custom Post types에 대한 첫 번째 기사에서 우수한 플러그인 Custom Post Type UI를 사용하여 자신만의 맞춤형 게시물 유형을 쉽게 만드는 방법을 살펴보았습니다. 이 두 번째 기사에서는 이를 수동으로(즉, 코딩을 통해) 수행하는 방법을 살펴보겠습니다. 그렇다면 플러그인을 사용하여 사용자 정의 게시물 유형을 만드는 것이 그렇게 쉬운 경우 왜 오랫동안 이 작업을 수행하고 싶습니까?

플러그인을 사용하여 사용자 정의 기능을 추가하는 것은 매우 잘 작동할 수 있습니다(그리고 기능 확장에 도움이 되는 방대한 플러그인 라이브러리는 WordPress가 인기 있는 이유 중 하나입니다). 그러나 플러그인이 지원되지 않으면 문제가 발생할 수 있습니다(플러그인 작성자가 계속 업데이트 및 개발하지 않기로 선택함). 이러한 일이 발생하면 플러그인에서 제공하는 기능이 더 이상 작동하지 않는다는 것을 알게 될 수 있으며, 이는 웹사이트가 플러그인에서 제공하는 특정 기능을 중심으로 구축된 경우 심각한 문제가 될 수 있습니다.

따라서 플러그인에 의존하지 않고 기능에서 직접 코딩할 수 있다면 고려해 보는 것이 좋습니다.

오늘은 플러그인을 사용하지 않고 사용자 정의 게시물 유형을 만드는 방법을 안내합니다. 또한 CPT(Custom Post Type) 레이블 정의와 같은 몇 가지 기본 구성과 함께 추천 이미지 활성화 등과 같은 몇 가지 기본 구성도 보여줍니다. 그런 다음 사용자 정의 분류를 추가하고 마지막으로 웹 사이트의 프론트엔드에 사용자 정의 게시물 유형 콘텐츠를 표시하는 방법을 볼 것입니다.

사용자 정의 게시물 유형 만들기

이전 튜토리얼을 따랐지만 여전히 CPT UI 플러그인이 설치되어 있는 경우 새 CPT를 수동으로 생성할 때 혼동이 발생하지 않도록 이 플러그인을 비활성화하십시오.

이전과 마찬가지로 새로운 사용자 정의 게시물 유형의 초점으로 레시피를 사용할 것입니다. 시작하기 위해 가장 먼저 해야 할 일은 functions.php 파일에 올바른 코드를 삽입하여 사용자 정의 게시물 유형을 만드는 것입니다.

기본 설정

지금은 WordPress가 제공하는 register_post_type 함수를 사용하여 최소한의 인수로 게시물 유형을 생성합니다.

 register_post_type( string $post_type, array|string $args = array() )

이 함수의 구조에는 두 개의 매개변수가 필요합니다. 소문자 영숫자 문자, 대시 및 밑줄만 포함해야 하는 게시 유형 키와 두 번째 선택적 매개변수인 추가 인수에 대한 $args . 우리는 이 기사에서 이러한 인수 중 일부에만 초점을 맞출 것이지만 몇 가지를 더 실험하고 싶다면 관련 WordPress 문서에서 사용 가능한 인수의 전체 목록을 찾을 수 있습니다.

이 기사의 목적을 위해 아래 코드를 사용합니다.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } add_action( 'init', 'recipes_post_type' );

따라하고 있다면 좋아하는 텍스트 편집기를 실행하고 이 코드를 functions.php 파일에 추가하십시오.

이 코드에서 'labels' 배열을 사용하여 게시물 유형에 대한 단수 및 복수 이름을 정의하고 show_in_rest 인수를 사용하여 레시피 게시물 및 public 인수에 대한 Gutenberg 편집기를 활성화한 것을 볼 수 있습니다.

public 논증은 실제로 세 가지 다른 일을 합니다. 그것은 관리자 사용자 정의 게시물 메뉴를 보여주고 웹 사이트 검색 결과에 사용자 정의 게시물 메뉴를 포함하고 WordPress 관리자 메뉴 영역에 사용자 정의 게시물 메뉴를 보여줍니다. 이러한 옵션은 각각 show_in_nav_menus , exclude_from_searchshow_ui 인수를 사용하여 별도로 수정할 수 있습니다. show_in_nav_menusshow_ui 기본값은 public 값을 상속하지만 exclude_from_search 기본값은 public 값의 반대입니다.

우리는 또한 사용자 정의 게시물이 지원할 기능을 정의하는 supports 인수를 사용했습니다. 현재로서는 '제목', '편집기' 및 '썸네일'만 활성화할 것입니다(일부 추가 옵션은 향후 기사에서 표시될 예정).

이 코드 조각을 우리 functions.php 파일에 추가하고 저장하면(이와 같은 작업을 수행하기 전에 항상 웹사이트를 백업하십시오!) 이제 WordPress 관리자에 완전히 새로운 메뉴 항목(이 경우 '레시피')이 표시됩니다.

다음으로 모양 > 메뉴로 이동하면 레시피가 옵션으로 추가되었음을 확인할 수 있습니다. 이것은 일이 제대로 작동하고 있음을 확인시켜줍니다.

참고: 메뉴 영역으로 이동했는데 '레시피' 메뉴 항목이 표시되지 않으면 화면 옵션에서 선택하지 않았을 수 있습니다. 이렇게 하려면 페이지 맨 위로 이동하여 화면 옵션 막대를 열고 새 사용자 정의 게시물 유형(이 예에서는 레시피)이 선택되었는지 확인합니다.

사용자 정의 게시물 유형에 대한 분류 추가

WordPress 분류는 유사한 콘텐츠를 그룹화하기 위해 존재합니다. 이 시점에서 '레시피' 사용자 정의 게시물이 있지만 원하는 방식으로 분류할 수 있는 기능이 없습니다. 따라서 레시피에 대해 별도의 카테고리를 만드는 것이 유용할 것입니다. 예를 들어 요리법이 속한 요리의 종류별로 레시피를 그룹화해 보겠습니다.

이를 달성하려면 새로운 '요리' 분류를 등록한 다음 '레시피' 게시물 유형에 연결해야 합니다.

분류를 추가하기 위해 WordPress가 제공하는 register_taxonomy() 함수를 사용합니다(여기에서 인수 목록 참조).

 register_taxonomy( string $taxonomy, $object_type, $args )

필수 인수는 분류법 키인 $taxonomy 와 분류법이 연관되어야 하는 객체 유형 또는 배열인 $object_type (이 경우에는 '레시피')입니다. $arg 매개변수에는 분류 체계의 관리 인스턴스에 레이블을 지정하는 데 필요한 값도 포함됩니다.

 function create_recipes_taxonomy() { register_taxonomy('cuisines','recipes',array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'Cuisines', 'taxonomy general name' ), 'singular_name' => _x( 'Cuisine', 'taxonomy singular name' ), 'menu_name' => __( 'Cuisines' ), 'all_items' => __( 'All Cuisines' ), 'edit_item' => __( 'Edit Cuisines' ), 'update_item' => __( 'Update Cuisines' ), 'add_new_item' => __( 'Add Cuisines' ), 'new_item_name' => __( 'New Cuisines' ), ), 'show_ui' => true, 'show_in_rest' => true, 'show_admin_column' => true, )); } add_action( 'init', 'create_recipes_taxonomy', 0 );

show_admin_column 부울은 분류법이 레시피 관리 목록 테이블의 열로 표시되는지 여부를 정의합니다.

이제 WordPress 관리자로 돌아가서 새로고침하면 레시피 메뉴에 '요리' 분류가 표시되어야 합니다.

또한 레시피 테이블에 '요리' 열이 표시되어야 합니다.

프런트엔드에 사용자 정의 게시물 유형 콘텐츠 표시

이 시점에서 메뉴에 사용자 정의 게시물과 사용자 정의 분류를 포함할 수 있어야 합니다. 이를 보여주기 위해 우리는 Cuisine Taxonomy 메뉴에 'Mediterranean'과 'Mexican'이라는 두 가지 요리를 추가했습니다. 그런 다음 WordPress 메뉴에 메뉴 옵션으로 표시되어 아래와 같은 레시피 메뉴를 만들 수 있습니다.

레시피 게시물을 만들어 요리 카테고리와 연결했다면 메뉴에서 연결된 요리를 선택할 때 해당 게시물이 표시되는 것을 볼 수 있습니다.

참고: 프런트 엔드에서 레시피 게시물을 보려고 하면 "404 not found"가 표시될 수 있습니다. 이것은 Permalink 캐시를 플러시해야 하기 때문에 발생할 수 있습니다. 이것은 하기 쉽습니다. 설정 > 퍼머링크로 이동하여 다시 저장하십시오.

이제 모든 레시피의 아카이브를 표시하기 위해 사용자 정의 코드를 사용하여 '모든 레시피'에 대한 또 다른 메뉴 항목을 만듭니다.

계속 진행하기 전에 사용자 정의 게시물 아카이브 인수가 true로 설정되어 있는지 확인해야 합니다. functions.php 의 코드로 돌아가서 레시피 유형을 등록하고 'has_archive' => true, 인수 배열에 추가합니다.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'has_archive' => true, ) ); } add_action( 'init', 'recipes_post_type' );

그런 다음 설정 > 영구 링크로 이동하여 404 오류가 발생하지 않도록 다시 저장합니다(이전에 언급한 대로).

이제 메뉴 구성 페이지에서 아카이브 페이지에 대한 사용자 정의 링크를 추가하십시오. 링크 텍스트는 "모든 레시피"일 수 있습니다.

URL은 영구 링크가 "일반"으로 설정된 경우 "/?post_type=recipes"이고 영구 링크가 "게시물 이름"으로 설정된 경우 '/recipes/'여야 합니다.

메뉴 항목을 추가하고 웹사이트로 이동하여 해당 링크를 클릭합니다. 이제 아카이브 보기에서 모든 레시피 게시물을 볼 수 있습니다.

추가 읽기

  • 플러그인을 사용하여 WordPress 사용자 정의 게시물 유형 만들기
  • WordPress 사용자 정의 게시물 유형 – 더 나아가기
  • 자신의 플러그인을 사용하여 WordPress 사용자 정의 게시물 유형을 만드십시오!

결론

이 기사에서 조사한 맞춤형 게시물 유형에 접근하는 방법은 처음에는 혼란스러워 보일 수 있습니다(특히 플러그인을 사용하여 맞춤형 게시물 유형을 생성하는 용이성과 비교할 때). 그러나 기꺼이 인내할 의향이 있다면 사용자 정의 게시물 유형을 코딩하면 해당 플러그인이 작동을 멈추거나 지원되지 않을 경우 플러그인에 의존하지 않아도 된다는 장점이 있습니다.