맞춤 게시물 유형에 맞춤 입력란을 추가하는 방법은 무엇입니까?


18

좋아, 몇 가지 맞춤 게시물 유형과 몇 가지 분류법을 등록했습니다. 이제 내 인생에서 내 맞춤 게시물 유형에 맞춤 입력란을 추가하는 데 필요한 코드를 파악할 수 없습니다.

드롭 다운과 한 줄 텍스트 영역이 필요합니다. 그러나 게시물 유형에 대한 별도의 필드가 필요합니다. 따라서 게시물 유형 1에는 3 개의 필드가 있고 게시물 유형 2에는 4 개의 필드가 있지만 필드는 다릅니다.

모든 팁은 코덱을 살펴보고 무언가를 찾았지만 functions.php파일 에 추가해야 할 내용을 이해할 수 없습니다.


답변:


19

이것은 아마도 당신이 생각하는 것보다 더 복잡 할 것입니다. 나는 프레임 워크를 사용하여 조사 할 것입니다.

자신만을 작성하려면 다음과 같은 훌륭한 자습서가 있습니다.


1
정말 힘들 것입니다. 포스트 타입과 분류법 에서처럼 레지스터 코드를 함수에 추가하는 것만 큼 간단하다고 생각했습니다.
xLRDxREVENGEx

1
이 답변에 1을 더할 것이지만 너무 복잡하지는 않습니다. thinkvitamin.com 링크는 메타 박스를 추가하고 저장하는 방법을 잘 설명합니다. sltaylor.co.uk 링크는 훌륭한 코딩 방법을 사용하는 방법에 대한 훌륭한 자습서입니다. save_post후크를 사용할 때주의해야 할 말은 조심입니다 . 이상한시기에 부릅니다. WP_DEBUG 변수를 사용할 때 발생할 수있는 잠재적 오류를 보려면 WP_DEBUG 변수를 true로 설정하십시오.
tollmanz

1
방금 업데이트로 thinkvitamin 링크를 사용했고 크게 도움이되었으며 사용자 정의 필드를 설정하는 데 도움이되었습니다
xLRDxREVENGEx

25

사용자 정의 게시물 유형의 게시물 게시 편집 화면 을 포함 하도록 supports인수를 사용 하거나 추가합니다 (을 사용하는 동안 register_post_type) custom-fields.

'supports' => array( 
  'title', 
  'editor', 
  'excerpt', 
  'thumbnail', 
  'custom-fields', 
  'revisions' 
)

출처 : https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields


2
이것이 문제를 해결할 수있는 이유를 설명해 주시겠습니까?
s_ha_dum

1
그렇습니다. 누가 대답을 -1 했습니까? 다시 가져가 시겠어요? 감사합니다
Junaid 카디르

6
...그리고.........?
Mark

9

몇 가지 유효성 검사를 추가해야하지만이 작업은 현재 버전의 WordPress에서 복잡해 보이지 않습니다.

기본적으로 사용자 정의 게시물 유형에 사용자 정의 필드를 추가하려면 두 단계가 필요합니다.

  1. 맞춤 입력란을 보유한 메타 박스 만들기
  2. 사용자 정의 필드를 데이터베이스에 저장

이 단계는 전체적으로 여기에 설명되어 있습니다. http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type

예:

"prefix-teammembers"라는 사용자 정의 게시물 유형에 "function"이라는 사용자 정의 필드를 추가하십시오.

먼저 메타 박스를 추가하십시오.

function prefix_teammembers_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high');
}
add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );

"접두사-팀원"을 추가하거나 편집하면 add_meta_boxes_{custom_post_type}후크가 트리거됩니다. 기능에 대해서는 http://codex.wordpress.org/Function_Reference/add_meta_box 를 참조 하십시오add_meta_box() . 위의 add_meta_box()is 호출에서 prefix_teammembers_metaboxes_html양식 필드를 추가하기위한 콜백 :

function prefix_teammembers_metaboxes_html()
{
    global $post;
    $custom = get_post_custom($post->ID);
    $function = isset($custom["function"][0])?$custom["function"][0]:'';
?>
    <label>Function:</label><input name="function" value="<?php echo $function; ?>">
<?php
}

두 번째 단계에서는 데이터베이스에 대한 사용자 정의 필드가 있습니다. save_post_{custom_post_type}후크를 저장하면 트리거됩니다 (v 3.7부터 /programming/5151409/wordpress-save-post-action-for-custom-posts 참조 ). 이것을 연결하여 사용자 정의 필드를 저장할 수 있습니다.

function prefix_teammembers_save_post()
{
    if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new? 
    global $post;
    update_post_meta($post->ID, "function", $_POST["function"]);
}   

add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );   

"prefix_teammembers_save_post는 왜 add new로 트리거됩니까?" 답을 찾았습니까? 또한 기억할 수없는 추가 함수 트리거로 걸려 넘어지고 있습니까?
alex

"prefix-teammembers"라는 사용자 정의 포스트 유형에 "function"이라는 사용자 정의 필드를 추가하십시오. ""는 무엇을 의미합니까? 이름? singular_name? 레이블? 아마도 register_post_type에서 첫 번째 인수로 사용 된 문자열 또는 일관성이있는 한 그것이 중요하지 않을 수도 있습니다
arnoldbird

1

사용자 정의 메타 박스 및 사용자 정의 필드를위한 다양한 플러그인이 있습니다. 개발자에게 중점을 둔 플러그인을 살펴보면 Meta Box를 사용해보십시오 . 가볍고 매우 강력합니다.

당신은 메타 박스 / 사용자 정의 필드에 대한 코드를 작성하는 방법에 대한 자습서를 찾고 있다면, 다음 좋은 시작이다. 코드를 쉽게 확장하여 쉽게 확장 할 수 있도록 도와주는 시리즈의 첫 번째 부분입니다.


-6
// slider_metaboxes_html , function for create HTML 
function slider_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high');
}

//add_meta_boxes_slider => add_meta_boxes_{custom post type}
add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );

완벽한 지식

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.