特定のページのカスタムテンプレートを作成する方法を知っています。しかし、私は特定のカスタムの投稿の種類のテンプレートを作成したいと思います。それが可能なのか、それが本当なら、どうすればいいのでしょうか?Wordpressでカスタム投稿のテンプレートを作成する
新しいテンプレートを作成した場合は、ページを追加するときにのみ管理者に表示されますが、新しい投稿タイプを追加するときに、特定のテンプレートを選択するオプションはありません。解決
問題:
シングル{CPT-スラグ} .PHP例えば:
/*
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
}
}
私はまだテストしていませんが、カスタムpost_typeのためにTEMPLATEを有効にするいくつかのプラグインがあります:http://wordpress.org/plugins/custom-post-template/ http:// wordpress .org/plugins/custom-post-type-page-template/ –