Trong wordpress có 2 loại custom post đã được mặc định sẳn là post và page. Post cho bài viết và page cho trang .Vậy nếu muốn tạo thêm 1 custom post ta làm thế nào. Bài viết sau sẽ hướng dẫn các bạn tạo 1 custom post đợn giản nhất.
Trước hết mình xin giới thiệu cách tạo custom post đơn giản nhất có thể dành cho người không chuyên về code đó là dùng plugin. Các plugin cho phép bạn tạo mọi thứ về custom post như taxonomy, field , post type,…
Đây là 2 plugin mình đã sử dụng qua và theo đánh giá của mình thì rất đầy đủ.
Và cách thứ 2 mình muốn hướng dẫn đó là code. Các bạn có thể tích hợp trong plugin, hoặc theme.
Khởi tạo custom post type
<?php if( ! function_exists( 'Domain_create_post_type' ) ) : function Domain_create_post_type() { $labels = array( 'name' => 'Domain', 'singular_name' => 'Domain', 'add_new' => 'Add Domain', 'all_items' => 'All Domain', 'add_new_item' => 'Add Domain', 'edit_item' => 'Edit Domain', 'new_item' => 'New Domain', 'view_item' => 'View Domain', 'search_items' => 'Search Domain', 'not_found' => 'No Domain found', 'not_found_in_trash' => 'No Domain found in trash', 'parent_item_colon' => 'Parent Domain' //'menu_name' => default to 'name' ); $args = array( 'labels' => $labels, 'public' => true, 'has_archive' => true, 'publicly_queryable' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'hierarchical' => false, 'supports' => array( 'title', 'editor', ), 'menu_position' => 5, 'menu_icon' => 'dashicons-clipboard', 'exclude_from_search' => false, 'register_meta_box_cb' => 'domain_add_post_type_metabox' ); register_post_type( 'domain', $args ); register_taxonomy( 'domain_category', // register custom taxonomy - category 'domain', array( 'hierarchical' => true, 'labels' => array( 'name' => 'Domain category', 'singular_name' => 'Domain category', ) ) ); register_taxonomy( 'domain_tag', // register custom taxonomy - tag 'domain', array( 'hierarchical' => false, 'labels' => array( 'name' => 'Domain tag', 'singular_name' => 'Domain tag', ) ) ); } add_action( 'init', 'Domain_create_post_type' ); endif; function domain_add_post_type_metabox() { add_meta_box( 'domain_metabox', 'Information', 'domain_metabox', 'domain', 'normal' ); } function domain_metabox() { global $post; $registrar = get_post_meta($post->ID, 'registrar', true); echo '<div class="form-horizontal" > <div class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">Registrar</label> <div class="col-sm-10"> <input type="text" class="form-control" name="registrar" value="'.$registrar .'" > </div> </div> </div>'; function domain_post_save_meta( $post_id, $post ) { $domain_post_meta['registrar'] = strtotime($_POST['registrar']); foreach( $domain_post_meta as $key => $value ) { $value = implode(',', (array)$value); if( get_post_meta( $post->ID, $key, FALSE ) ) { update_post_meta($post->ID, $key, $value); } else { add_post_meta( $post->ID, $key, $value ); } if( !$value ) { delete_post_meta( $post->ID, $key ); } } } add_action( 'save_post', 'domain_post_save_meta', 1, 2 ); ?>
Trong đây mình có làm phần tích hợp meta box nếu các bạn thấy không cần thiết thì bỏ ra nhé.
Chúc các bạn thành công !
[…] được viết trên dựa theo Custom post nên các bạn có thể yên tâm quản lý 1 cách vô cùng đơn […]