반응형
Wordpress에서 사용자 지정 게시물 유형에 대한 템플릿 만들기
특정 페이지에 대한 사용자 지정 템플릿을 만드는 방법을 알고 있습니다.그러나 특정 사용자 지정 게시물 유형에 대한 템플릿을 만들고 싶습니다.그것이 가능하고 사실이라면 어떻게 해야 합니까?
새 템플릿을 만들면 페이지를 추가할 때만 관리자에게 표시되지만 새 게시 유형을 추가할 때는 특정 템플릿을 선택할 수 있는 옵션이 없습니다.
문제 해결:
/*
Show the list of available custom templates templates in the Custom Post Type admin section
*/
/**
* Post_type
*/
define( 'MY_THEME_POST_TYPE', 'cases' );
/**
* Load the page template for any post object
* having the appropriate meta key set.
*/
add_action( 'template_redirect', 'mytheme_template_redirect' );
function mytheme_template_redirect() {
global $wp_query;
$id = (int) $wp_query->get_queried_object_id();
$template = get_post_meta( $id, '_wp_page_template', true );
if ( $template && 'default' !== $template ) {
$file = STYLESHEETPATH . '/' . $template;
if( is_file( $file ) ) {
require_once $file;
exit;
}
}
}
/**
* Process the Meta Box
* @todo Permissions check.
* @todo Filter input.
* @todo Nonces.
*/
add_action( 'save_post', 'mytheme_process_resource_template' );
function mytheme_process_resource_template() {
global $post;
/* Sanitize $_POST array. */
$clean_id = ( isset( $_POST['ID'] ) ) ? intval( $_POST['ID'] ) : 0;
if ( !empty( $_POST['page_template'] ) && MY_THEME_POST_TYPE == $post->post_type ) {
$page_templates = get_page_templates();
if ( 'default' != $page_template && !in_array( $_POST['page_template'], $page_templates ) ) {
if ( $wp_error )
return new WP_Error('invalid_page_template', __('The page template is invalid.'));
else
return 0;
}
update_post_meta( $clean_id, '_wp_page_template', $_POST['page_template'] );
}
}
/**
* Registers the Meta Box
* @uses mytheme_page_attributes_meta_box()
*/
add_action( 'admin_init', 'mytheme_register_meta_boxes', 10 );
function mytheme_register_meta_boxes() {
add_meta_box(
'mytheme_post_type_template',
'Template',
'mytheme_page_attributes_meta_box',
MY_THEME_POST_TYPE,
'side',
'low'
);
}
/**
* Creates the Meta Box
*/
function mytheme_page_attributes_meta_box() {
global $post;
$post_type_object = get_post_type_object($post->post_type);
if ( 0 != count( get_page_templates() ) ) {
$template = get_post_meta( $post->ID, '_wp_page_template', true );
?>
<p><strong><?php _e('Template') ?></strong></p>
<label class="screen-reader-text" for="page_template"><?php _e('Page Template') ?></label><select name="page_template" id="page_template">
<option value='default'><?php _e('Default Template'); ?></option>
<?php page_template_dropdown( $template ); ?>
</select>
<?php
}
}
다음 페이지를 만듭니다.
단일 {cpt-slug}.단품과 같은 phpphp
사용자 지정 게시물 유형의 페이지를 표시할 때 사용됩니다. 즉, 누군가가 http://example.com/product/awesome-shoes/ 에 갈 때 사용됩니다.
언급URL : https://stackoverflow.com/questions/7243990/create-template-for-custom-post-types-in-wordpress
반응형
'programing' 카테고리의 다른 글
arm-linux-gnueabi-gcc를 사용하는 안드로이드용 정적 Chello world 교차 컴파일 (0) | 2023.10.15 |
---|---|
jQuery ajax inside loop 문제 (0) | 2023.10.15 |
.success and .error로 Angularjs에서 $q 약속을 확장하려면 어떻게 해야 합니까? (0) | 2023.10.15 |
입력 유형="숫자"에서 웹킷의 스핀 버튼을 비활성화하시겠습니까? (0) | 2023.10.15 |
Oracle에서 루프용 커서 (0) | 2023.10.15 |