Vorlage für benutzerdefinierten Beitragstyp erstellen wie für Seite

Ich mache mein erstes benutzerdefiniertes Design mit benutzerdefinierten Post-Typen und ich habe ein Problem festgestellt. Ich möchte einige Vorlagen machen, wie Sie für Pages machen können (zB page-fullwidth.php page-noslider.php etc.) Ich weiß, wenn Sie eine Vorlage für einen benutzerdefinierten Beitragstyp erstellen möchten, machen Sie zum Beispiel single-cookingrecipes. php, aber ich möchte single-cookingrecipes-fullwidth.php und einige mehr machen.

Ich habe 2 solche Dateien erstellt und hinzugefügt

 

und immer noch kein Glück 🙁

Solutions Collecting From Web of "Vorlage für benutzerdefinierten Beitragstyp erstellen wie für Seite"

Es klingt, als würden Sie über diese Seitenanzeige-Vorlage sprechen:

page-{slug}.php – Wenn der Seiten-Slug recent-news , wird WordPress page-recent-news.php

Und du willst single-{cpt-slug}-{slug}.php .

Wenn dem so ist, glaube ich, dass Sie die Handhabung dieser Seitenvorlage mit den folgenden annähern können:

 function cpt_slug_template_wpse_117630($template) { global $post; $templ = locate_template('single-'.$post->post_type.'-'.$post->post_name.'.php'); if ( 'book' == $post->post_type && 'poem' == $post->post_name && !empty($templ)) { $template = get_stylesheet_directory().'/single-'.$post->post_type.'-'.$post->post_name.'.php'; } return $template; } add_filter('single_template','cpt_slug_template_wpse_117630'); 

Angenommen, Sie rufen eine neue Seite art.php auf

  < ?php /* Template Name: Art */ ?> 

Als nächstes sollten Sie zu Ihrem Admin-Dashboard gehen. Dann folgen Sie den einfachen Schritten.

  1. Gehe zu Seiten
  2. Auf der rechten Seite befindet sich die Vorlage “Seitenattribute”. Standardmäßig hat es “Default Template”. Klick es.
  3. Wählen Sie Kunst aus.

Das ist es.

Benutzerdefinierter Post-Typ kann Template-Optionen wie Pages haben, aber es ist ein wenig komplex, aber ich werde versuchen, es zu erklären:

1) Sie müssen eine neue Metabox mit einem Dropdown (benutzerdefiniertes Metafeld) aller Vorlagen registrieren:

 function register_post_cookingrecipes() { add_meta_box('cookingrecipes-details', __('Template Details'), 'add_cookingrecipes_meta_box', 'cookingrecipes', 'side', 'high'); if (('delete_posts')) add_action('delete_post', 'delete_meta_cookingrecipes', 10); } add_action('admin_init', 'register_post_cookingrecipes', 1); function add_cookingrecipes_meta_box($post) { $page_template = get_post_meta($post->ID, '_wp_page_template', TRUE); ?> 
< ?php }

2) Speichern / Löschen Sie den Inhalt des neuen Meta-Felds, wenn der Beitrag gespeichert wurde.

 function save_cookingrecipes_meta($post_id) { $post = $_POST['post_type']; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; if (!current_user_can('edit_page', $post_id)) return; switch ($post) { case 'cookingrecipes': $page_template = $_POST['page_template']; if (!empty($page_template)) update_post_meta($post_id, '_wp_page_template', $page_template); break; default: return; } } add_action('save_post', 'save_cookingrecipes_meta'); function delete_meta_cookingrecipes($post_id) { $post = $_POST['post_type']; switch ($post) { case 'cookingrecipes': delete_post_meta($post_id, '_wp_page_template'); break; default: return; } } 

3) Der Schlüssel zum Laden der benutzerdefinierten Vorlage, die Sie erstellt haben, ist hier

 function cookingrecipes_template_redirect() { global $post; $queried_post_type = get_query_var('post_type'); if (is_single() && 'cookingrecipes' == $queried_post_type) { $page_template = get_post_meta($post->ID, '_wp_page_template', TRUE); if ($page_template !== '' && isset($page_template)) { include(get_stylesheet_directory() . '/' . $page_template); exit; } } } add_action("template_redirect", 'cookingrecipes_template_redirect'); 

irgendwelche Probleme, lass es mich wissen