So come creare un modello personalizzato per una pagina specifica. Tuttavia, vorrei creare un modello per un tipo di post personalizzato specifico. È possibile e se è vero come posso farlo?Crea modello per i tipi di post personalizzati in Wordpress
Se creo un nuovo modello, verrà visualizzato in admin solo quando aggiungo una pagina, ma quando aggiungo un nuovo tipo di post non ho la possibilità di selezionare un determinato modello.
Problema risolto:
/*
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
}
}
Non ho ancora provato, ma ci sono alcuni plugin per abilitare TEMPLATE per un post_type personalizzato: http://wordpress.org/plugins/custom-post-template/ http: // wordpress .org/plugins/custom-post-type-page-template/ –