WordPress 사용자 지정 메타 상자 이해
이전 게시물에서는 WordPress 사용자 정의 필드에 대해 이야기했습니다.이 필드를 사용하면 WordPress가 사후 편집 화면에서 제공하는 사용자 정의 필드 상자를 사용하여 게시물에 새 항목을 추가하고 출력 할 수 있습니다. 그러나 사용자 정의 필드 상자 사용에 익숙하지 않은 경우 (우리 모두 사용자의 기본 설정이 있음) 다음 방법 중 하나를 사용할 수 있습니다. 메타 상자를 만들 수 있습니다.
메타 박스는 맞춤 상자 우리는 우리 자신 만의 것을 만들 수 있습니다. 새 항목을 추가하는 입력 또는 기타 대화식 UI 포함 게시물 또는 페이지 수 사용자 지정 필드 상자 대신 메타 상자를 사용하여 동일한 작업을 수행 할 수 있습니다. 하나 만드는 방법을 살펴 보겠습니다..
Hongkiat.com에 대한 추가 정보 :
- WordPress에서 미디어 업로드 디렉토리 사용자 정의
- WordPress 편집기 스타일 사용자 정의
- 사용자 정의 “하디” WordPress 관리 표시 줄에서
- WordPress 사용자를위한 사용자 정의 분류 등록
- WordPress 메뉴에서 아이콘 표시
메타 박스 만들기
WordPress는 API 함수를 제공합니다. add_meta_box
, 곧바로 메타 박스를 만들 수 있습니다. 이것은 최대한의 기본 형태이다..
함수 add_post_reference () add_meta_box ( 'post-reference', 'Reference', 'referenceCallBack', 'post'); add_action ( 'add_meta_boxes', 'add_post_reference'); function referenceCallBack () echo 'Hello World'
그만큼 add_meta_box
ID, 메타 박스 제목, 'Hello World'를 호출 할 콜백 함수 및 표시 할 게시물 유형의 네 가지 매개 변수를 취합니다. 이 경우 게시물 편집 페이지에 새 메타 상자가 지정됩니다 (페이지에서도 작동 함).
사후 편집 섹션에서 다음과 같이 새 상자를 찾을 수 있습니다..
위에서 볼 수 있듯이 새로운 메타 박스는 WYSIWYG 편집기 아래에 나타납니다. 사이드 바에 추가하고 싶으면 사이드 바의 제일 위에 사이드 바를 올리려면 포스트 파라미터 뒤에 'side'를 추가하고 'high'와 함께 추가하면됩니다..
function add_post_reference () add_meta_box ( 'post-reference', 'Reference', 'referenceCallBack', 'post', 'side', 'high'); add_action ( 'add_meta_boxes', 'add_post_reference');
이제 당신은 그것을 게시 상자…
이제 'Hello World'텍스트를 대체하십시오. 새 항목에 대한 입력 필드와 같은 요소를 추가해 보겠습니다..
이 예에서는 Reference Name을 추가하는 입력 필드와 Reference Link를위한 입력 필드로 구성된 두 개의 입력 필드를 추가합니다.
function referenceCallBack ($ post) wp_nonce_field ( 'reference_meta_box', 'reference_nonce'); $ name_value = get_post_meta ($ post-> ID, '_post_reference_name', true); $ link_value = get_post_meta ($ post-> ID, '_post_reference_link', true); 에코 ''; 에코 ''; 에코 ''. '참조 이름 추가'. '
'; 에코 ''; 에코 ''; 에코 ''. '참조의 링크를 추가하십시오.'
';
게시물 편집 페이지를 새로 고치십시오. 그러면이 두 입력이 추가 된 것을 볼 수 있습니다..
그만큼 $ name_value
과 $ link_value
변수는 데이터베이스에서 항목을 검색하고이를 입력 필드에 채 웁니다. 데이터베이스에 항목을 가져 오려면 해당 항목을 작성해야합니다..
이러한 입력을 통해 추가 된 항목을 데이터베이스에 안전하게 채울 수있는 몇 줄의 코드를 추가해야합니다.. “안전하게” 여기에는 합법적이고 인증 된 항목 (해커 또는 다른 비인가 직원이 아닌 사람)이 포함됩니다. 항목을 저장하려면 새 함수를 만들어야합니다. 함수의 이름을 지어 봅시다. save_post_reference
, 그렇게.
함수 save_post_reference ($ post_id) add_action ( 'save_post', 'save_post_reference');
앞서 언급 한 것처럼 보안을 위해 몇 가지 사항을 확인해야합니다.
(1) 우리는 사용자가 게시물을 수정할 수있는 기능이있다..
if (! current_user_can ( 'edit_post', $ post_id)) return;
(2) 우리는 또한 Nonce가 설정되어 있는지 확인하십시오..
if (! isset ($ _POST [ 'reference_nonce'])) return; if (! wp_verify_nonce ($ _POST [ 'reference_nonce'], 'reference_meta_box')) return;
(삼) 그런 다음 데이터가 자동 저장되지 않도록해야합니다. 저장은 한 번만 수행 할 수 있습니다. “구하다” 또는 “최신 정보” 버튼이 클릭되었습니다..
if (정의 된 ( 'DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
(4) 우리는 또한 우리의 두 가지 투입물, post_reference_name
과 post_reference_link
, 우리가 항목을 제출하기 전에 설정되고 준비되었습니다..
if (! isset ($ _POST [ 'post_reference_name']) ||! isset ($ _POST [ 'post_reference_link'])) return;
(5) 그리고 항목은 웹 사이트 보안을 손상시킬 수있는 예기치 않은 문자가 없어야합니다. 이것을 확인하려면 WordPress 내장 함수를 사용할 수 있습니다 sanitize_text_field
.
$ reference_name = sanitize_text_field ($ _POST [ 'post_reference_name']); $ reference_link = sanitize_text_field ($ _POST [ 'post_reference_link']);
이제 데이터베이스에 항목을 저장할 준비가되었습니다.
update_post_meta ($ post_id, '_post_reference_name', $ reference_name); update_post_meta ($ post_id, '_post_reference_link', $ reference_link);
이제 시도해 볼 수 있습니다. 입력 필드에 내용을 입력하고 “최신 정보” 저장 버튼.
결론
우리는 방금 두 개의 입력으로 구성된 메타 박스를 만들었습니다. 라디오 버튼이나 선택 상자와 같은 다른 유형의 입력으로 상자를 확장 할 수 있습니다. 이 예제는 매우 기본적인 것일 수 있지만, 일단 익숙해지면 훨씬 더 복잡한 용도로이 메타 박스를 사용할 수 있습니다. 당신이 이것을 사용할 것인지 그리고 그것을 위해 무엇을 사용할 것인지 알려주십시오..