Cum se obține meniul drop down pentru șabloane în atributele paginii unui tip de postare personalizat?
Când înregistrez tipul meu de postare personalizat, setez următoarele:
'hierarchical' => true,
'supports' => array( 'title','author', 'page-attributes' ),
Astfel, ar trebui să văd 'order', 'templates', 'parents' în caseta Attributes când creez o postare nouă. Totuși, nu văd meniul dropdown pentru 'templates' apărând. Mai este ceva ce ar trebui să fac pentru a activa opțiunea de alegere a 'templates'?

Ei bine, începând cu WordPress 4.7, șabloanele personalizate sunt disponibile și pentru tipurile de postări personalizate. Când definiți un șablon, adăugați o altă linie sub numele șablonului, astfel (unde 'product' este tipul vostru de postare personalizată):
<?php
/*
Template Name: Layout personalizat
Template Post Type: post, page, product
*/
// codul tău aici
și nu uitați să adăugați 'page-attributes' atunci când înregistrați tipul de postare personalizată:
'supports' => array('title', 'page-attributes'),
pentru a afișa caseta "Atribute postare".

Mai multe informații aici: https://make.wordpress.org/core/2016/11/03/post-type-templates-in-4-7/

Nu poți aplica șabloane la tipurile personalizate de articole în acest fel. Acesta va apărea doar dacă tipul de articol este 'page' (Verifică wp-admin/includes/meta-boxes.php linia 568). Totuși, dacă dorești să stilizezi toate tipurile personalizate de articole în același mod, dar diferit de alte tipuri de articole, poți folosi single-[posttype].php -> http://codex.wordpress.org/images/1/18/Template_Hierarchy.png

Dropdown-ul pentru șabloane încă nu este suportat pentru tipurile personalizate de postări în versiunea 4.1?

Cu tema mea, ofer șabloane "virtuale". Nu există fișiere specifice {template}.php
în tema mea, așa că am filtrat șabloanele de PAGINĂ astfel:
function my_virtual_templates( $templates ) {
$my_virtual_templates = array(
'virtual_template_id_1' => 'Șablon 1',
'virtual_template_id_2' => 'Șablon 2',
'virtual_template_id_3' => 'Șablon 3'
);
// Combină cu orice șabloane deja disponibile
$templates = array_merge( $templates, $my_virtual_templates );
return $templates;
}
add_filter( 'theme_page_templates', 'my_virtual_templates' );
Căutam o modalitate "simplă" de a adăuga caseta meta reală pe un Tip de Postare Personalizată (CPT) când am dat peste acest articol. Deoarece noul meu CPT va folosi același array de șabloane "virtuale", aveam nevoie doar să obțin o casetă meta pentru postare.
Folosind theme_{$post_type}_templates se creează automat această zonă de casetă meta pentru mine. Așadar, acolo unde CPT-ul meu se numește my_cpt
, am adăugat filtrul astfel:
add_filter( 'theme_my_cpt_templates', 'my_virtual_templates');
Acum, caseta meta și selectorul apar, și pot chiar să le modific pe ecranul de editare în masă, deoarece toate acestea sunt integrate. Foarte util!
