Thông thường để tạo template cho trang bạn phải vào theme để tạo template. Nhưng vấn đề ở đây là khi bạn muốn thay đổi theme thì template vẫn không thay đổi. Giải pháp đưa ra là bạn tạo template trong plugin để tách ra khỏi theme. Như vầy dù bạn có thay đổi theme thì template vẫn giữ nguyên. Tiêu biễu như plugin Woocommerce
Các loại template các bạn dùng custom post, archive và page.
Các hook được sử dụng: single_template, archive_template và page_template
Tiến hành code.
1.Custom post
Đối với custom post ta dung hook single_template. ‘ YOUR_CUSTOM_POST ‘ là tên custom post của bạn dùng.
function get_custom_post_type_single($single_template) { global $post; if ($post->post_type == 'YOUR_CUSTOM_POST') { $single_template = dirname( __FILE__ ) . '/single-YOUR_CUSTOM_POST.php'; } return $single_template; } add_filter( 'single_template', 'get_custom_post_type_single' );
2.Archive
Đối với trang archive ta dung hook archive_template. ‘ YOUR_TAXONOMY ‘ là tên taxonomy của bạn dùng.
function get_custom_archive($archive_template){ global $wpdb; $archive =$wpdb->last_result; if ( $archive[0]->taxonomy== 'YOUR_TAXONOMY' ) { $archive_template = dirname( __FILE__ ) . '/archive-YOUR_TAXONOMY.php'; } return $archive_template; } add_filter( "archive_template", "get_custom_archive" ) ;
3.Page Template
Đối với page bạn phải chọn slug chính xác thì template mới được sử dụng.
add_filter( 'page_template', 'wpa_page_template' ); function wpa_page_template( $page_template ) { if ( is_page( YOUR_SLUG ) ) { $page_template = dirname( __FILE__ ) . '/templates/template-YOUR_SLUG.php'; } return $page_template; }
Chúc các bạn thành công !
… [Trackback]
[…] Information on that Topic: hoangthuc.com/tao-template-trong-plugin-wordpress/ […]