Tạo Custom Post Type trong WordPress chỉ với 2 bước

tạo custom post type trong wordpress chỉ với 2 bước
4/5 - (2 votes)

Ngoài Post Type mặc định trong wordpress thì bạn cũng có thể tạo Custom post type để phục vụ cho mục đích riêng của mình. Ví dụ bạn có thể tạo custom post để làm sider cho trang web thay vì đặt ảnh chết hoặc lấy từ bài đăng ở post type.

2 bước tạo custom post type nhanh chóng

Bước 1:

Chúng ta sẽ tạo một custom post type có tên gọi là “Slides”. Bạn chép phần code bên dưới này và bỏ vào function.php.


// Creating a Slides Custom Post Type
function slides_custom_post_type() {
	$labels = array(
		'name'                => __( 'Slides' ),
		'singular_name'       => __( 'Slide'),
		'menu_name'           => __( 'Slides'),
		'parent_item_colon'   => __( 'Parent Slide'),
		'all_items'           => __( 'All Slides'),
		'view_item'           => __( 'View Slide'),
		'add_new_item'        => __( 'Add New Slide'),
		'add_new'             => __( 'Add New'),
		'edit_item'           => __( 'Edit Slide'),
		'update_item'         => __( 'Update Slide'),
		'search_items'        => __( 'Search Slide'),
		'not_found'           => __( 'Not Found'),
		'not_found_in_trash'  => __( 'Not found in Trash')
	);
	$args = array(
		'label'               => __( 'slides'),
		'description'         => __( 'Best Crunchify Slides'),
		'labels'              => $labels,
		'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'revisions', 'custom-fields'),
		'public'              => true,
		'hierarchical'        => false,
		'show_ui'             => true,
		'show_in_menu'        => true,
		'show_in_nav_menus'   => true,
		'show_in_admin_bar'   => true,
		'has_archive'         => true,
		'can_export'          => true,
		'exclude_from_search' => false,
	        'yarpp_support'       => true,
		'taxonomies' 	      => array('post_tag'),
		'publicly_queryable'  => true,

		'show_in_rest'        => true,
		'capability_type'     => 'page'
);
	register_post_type( 'slides', $args );
}
add_action( 'init', 'slides_custom_post_type', 0 );

Trong code trên 'show_in_rest' => true, sẽ giúp phần soạn thảo nội dung bài đăng trong custom post của bạn hiển thị ở giao diện “gutenberg blocks” thay vì giao diện cổ điển. Tuy nhiên nếu bạn hoài cổ thì có thể xoá bỏ dòng code trên.

Ngoài ra nếu bạn không muốn dài dòng mà vẫn đầy đủ chức năng thì có thể dùng đoạn code ngắn gọn dưới đây để tạo custom post type

// Our custom post type function
function create_posttype() {
  
    register_post_type( 'movies',
    // CPT Options
        array(
            'labels' => array(
                'name' => __( 'Slides' ),
                'singular_name' => __( 'Slide' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'slides'),
            'show_in_rest' => true,
  
        )
    );
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );

Sau khi bạn copy đoạn code custom post trên vào thì bạn sẽ thấy trong dashboard wordpress của bạn hiển thị “Slide” custom post như hình bên dưới.

tạo custom post type trong wordpress chỉ với 3 bước
Tạo slide custom post type

Bước 2:

Sau khi tạo xong custom post type ta sẽ tạo custom taxonomy để giúp nhóm các bài đăng trong custom post lại. Mặc định có 2 custom taxonomy trong wordpress post là categories và tags. Chúng ta sẽ tạo một custom taxonomy cho phần slide custom post với tên gọi là “Type”

Bạn tiếp tục copy đoạn code dưới đây dán vào bên dưới đoạn code trên hoặc bất cứ đâu trong function.php

//create a custom taxonomy name it "type" for your posts
function slides_custom_taxonomy() {
 
  $labels = array(
    'name' => _x( 'Types', 'taxonomy general name' ),
    'singular_name' => _x( 'Type', 'taxonomy singular name' ),
    'search_items' =>  __( 'Search Types' ),
    'all_items' => __( 'All Types' ),
    'parent_item' => __( 'Parent Type' ),
    'parent_item_colon' => __( 'Parent Type:' ),
    'edit_item' => __( 'Edit Type' ), 
    'update_item' => __( 'Update Type' ),
    'add_new_item' => __( 'Add New Type' ),
    'new_item_name' => __( 'New Type Name' ),
    'menu_name' => __( 'Types' ),
  ); 	
 
  register_taxonomy('types',array('slides'), array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'show_admin_column' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'type' ),
  ));
}

add_action( 'init', 'slides_custom_taxonomy', 0 );

Lúc này bạn sẽ nhìn thấy được custom taxonomy với tên gọi là type xuất hiện trọng menu slide và bạn cũng có thể tạo cũng như thêm type cho bài viết trong custom post tương tự như bạn tạo category hay tag

tạo custom taxonomy cho custom post type trong wordpress
tạo custom taxonomy cho custom post type trong wordpress

Bạn đã hoàn thành việc tạo một custom post type wordpress chỉ trong 2 bước. Bây giờ bạn có thể đăng bài viết mới của mình trong cuspost tương tự như đăng bài viết trong post của wordpress.

Templates cho custom post type

Mặc định trong wordpress để hiển thị danh sách bài đăng và hiển thị chi tiết nội dung bài đăng thì nó sẽ sử dụng hai file mặc định dưới đây.

archive.php
single.php

Và khi bạn tạo một custom post type thì nó cũng sẽ sử dụng 2 files này để hiển thị danh sách và nội dung của custom post. Nhưng nếu bạn không thích hoặc có ý định thiết kế một template riêng custom post của mình thì bạn có thể sử dụng cú pháp sau.

archive-{post_type}.php
single-{post_type}.php

Dựa vào đó bạn sẽ có hai files lần lượt là archive-slides.php và single-slides.php.

Hiển thị custom post type trong wordpress

Để hoàn thiện hơn cho custom post bạn chúng ta sẽ tìm hiểu sơ qua về vấn đề hiển thị của custom post.

Đường dẫn Url thân thiện với SEO trong custom post type

Đường dẫn url để hiển thị bài đăng trong archive page của bạn sẽ có dạng như dưới đây:

https://ten-mien-cua-ban.com/?post_type=slides

Tuy nhiên đường dẫn url này sẽ không thân thiện dành cho SEO vì vậy bạn nên sử dụng đường dẫn sau để cho url của bạn thân thiện với SEO hơn.

https://ten-mien-cua-ban.com/slides

Chú ý: Nếu url thân thiện với SEO mà không hiển thị được bài đăng thì bạn vào Settings -> Permalinks và chọn vào ô “Post name” rồi lưu lại là được.

url thân thiện với seo trong custom post type wordpress

Query cho custom post type trong wordpress

Ngoài việc hiển thị bài đăng theo mặc định như trên thì chúng ta cũng có thể nhờ đến vòng lặp query để hiển thị bài đăng custom post type ở bất cứ đâu chúng ta mong muốn.

Bạn áp dụng đoạn code bên dưới và đừng quên đổ post_type lại cho đúng với cái của bạn đang làm nhé.

<?php
$args = array(
  'post_type'   => 'slides',
  'post_status' => 'publish',
  'tax_query'   => array(
  	array(
  		'taxonomy' => 'testimonial_service',
  		'field'    => 'slug',
  		'terms'    => 'diving'
  	)
  )
 );
 
$the_query  = new WP_Query( $args );
if( $the_query ->have_posts() ) :
?>
  <ul>
    <?php
      while( $the_query ->have_posts() ) :
        $the_query ->the_post();
        ?>
          <li><?php printf( '%1$s - %2$s', get_the_title(), get_the_content() );  ?></li>
        <?php
      endwhile;
      wp_reset_postdata();
    ?>
  </ul>
<?php
else :
  esc_html_e( 'No slides in the diving taxonomy!', 'text-domain' );
endif;
?>

Ngoài những phần trên bạn cũng có thể hiển thị bài đăng custom post trong widget hay ngoài trang chủ…

Để lại bình luận

Email của bạn sẽ được bảo mật.