커스텀 투고 타입에 커스텀필드를 추가하는 방법
좋은 아침이에요.
'Products'라는 커스텀 포스트 타입을 작성했습니다.커스텀 필드(metabox가 올바른 용어입니까?)를 만들고 싶습니다.여기서 클라이언트는 이 CPT 내의 특정 게시물이 특집 게시물인지 여부를 판별하기 위해 체크박스를 켤 수 있습니다.
여기 제 함수의 코드가 있습니다.php를 사용하여 'Products' CPT를 만듭니다.
function products_custom_init() {
$labels = array(
'name' => _x('Products', 'post type general name'),
'singular_name' => _x('Product', 'post type singular name'),
'add_new' => _x('Add New', 'products'),
'add_new_item' => __('Add New Product'),
'edit_item' => __('Edit Product'),
'new_item' => __('New Product'),
'view_item' => __('View Product'),
'search_items' => __('Search Products'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => false,
'query_var' => true,
'rewrite' => array('slug','pages'),
'capability_type' => 'post',
'hierarchical' => true,
'menu_position' => 5,
'supports' => array('title','editor','thumbnail','excerpt',)
);
register_post_type( 'products' , $args );
}
add_action( 'init', 'products_custom_init' );
그럼 제품 게시물에만 '기능' 메타박스 / 커스텀 필드를 추가하려면 어떻게 해야 하나요?
대단히 고맙습니다,
신시아
커스텀 투고 타입 내에 커스텀 메타 박스를 작성하려면 , 3개의 기능을 사용할 필요가 있습니다.
투고 편집 화면에서 커스텀 「메타 박스」블록/화면을 작성하는 기능:
커스텀 메타를 변경/표시하기 위해 입력 필드를 추가하는 기능입니다.
마지막으로 투고 편집 화면에서 [저장(Save)]를 클릭하면 나머지 투고와 함께 메타를 저장하는 기능입니다.
이 경우 커스텀 체크박스는 다음과 같습니다.
add_action( 'add_meta_boxes_products', 'meta_box_for_products' );
function meta_box_for_products( $post ){
add_meta_box( 'my_meta_box_custom_id', __( 'Additional info', 'textdomain' ), 'my_custom_meta_box_html_output', 'products', 'normal', 'low' );
}
function my_custom_meta_box_html_output( $post ) {
wp_nonce_field( basename( __FILE__ ), 'my_custom_meta_box_nonce' ); //used later for security
echo '<p><input type="checkbox" name="is_this_featured" value="checked" '.get_post_meta($post->ID, 'team_member_title', true).'/><label for="is_this_featured">'.__('Featured Product?', 'textdomain').'</label></p>';
}
add_action( 'save_post_team_member', 'team_member_save_meta_boxes_data', 10, 2 );
function team_member_save_meta_boxes_data( $post_id ){
// check for nonce to top xss
if ( !isset( $_POST['my_custom_meta_box_nonce'] ) || !wp_verify_nonce( $_POST['my_custom_meta_box_nonce'], basename( __FILE__ ) ) ){
return;
}
// check for correct user capabilities - stop internal xss from customers
if ( ! current_user_can( 'edit_post', $post_id ) ){
return;
}
// update fields
if ( isset( $_REQUEST['is_this_featured'] ) ) {
update_post_meta( $post_id, 'is_this_featured', sanitize_text_field( $_POST['is_this_featured'] ) );
}
}
Muhammad Yasin이 말했듯이, 저는 다음과 같은 플러그인을 추천합니다.
http://wordpress.org/extend/plugins/more-fields/
코드로 직접 하고 싶은 경우는, 다음을 봐 주세요.
<?php add_meta_box( $id, $title, $callback, $post_type, $context, $priority, $callback_args ); ?>
우편물 종류별로 상자를 등록할 수 있습니다.
이 플러그인을 사용할 수 있습니다.
http://wordpress.org/extend/plugins/types/
또는 이 튜토리얼이 도움이 될 수 있습니다.
http://wptheming.com/2010/08/custom-metabox-for-post-type/
언급URL : https://stackoverflow.com/questions/11740907/how-to-add-custom-field-to-custom-post-type
'source' 카테고리의 다른 글
2개의 포트를 사용하여 스프링 부트를 설정하다 (0) | 2023.03.15 |
---|---|
AngularJs $http.post()이 데이터를 전송하지 않음 (0) | 2023.03.15 |
Gutenberg - 1개의 블록 타입에 여러 개의 이너 블록 (0) | 2023.03.15 |
다운로드, jackson.codehaus.org jar의 (0) | 2023.03.15 |
"wp_get_attachment_image($attachment_id)" 워드프레스 함수에 사용자 지정 클래스 추가 (0) | 2023.03.15 |