Adăugarea unui șablon în panoul Atribute Pagină pentru articole și pagini

9 sept. 2010, 15:54:16
Vizualizări: 33.8K
Voturi: 5

Aș dori să păstrez tema mea principală ca temă activă, dar să permit utilizatorilor să selecteze un aspect ușor diferit prin intermediul panoului "Atribute Pagină/Articol". În mod ideal, aș dori să stochez acest aspect în directorul "styles" al temei mele principale, într-un folder separat.

MyTheme > styles > My-special-Layout > style.css

Astfel încât în panoul "Atribute Pagină", să văd un șablon numit "My-special-layout"...

Totuși, am două probleme...

  1. Nu reușesc să fac tema "copil" să apară în panoul "Atribute Pagină". (Adaug doar un folder în directorul temei principale și plasez un fișier style.css acolo care are valoarea "Template: my_main_theme_directory"). Dar nu văd niciodată șabloanele să apară în panoul "atribute pagină".

  2. Nu pot obține panoul "Atribute Pagină" în editorul de ARTICOLE. Aș dori să permit aplicarea șablonului atât pentru Articole cât și pentru Pagini. Cum pot obține acest panou în editorul de articole?

0
Toate răspunsurile la întrebare 2
2

Nu folosiți temele copil corect. O temă copil este o temă complet separată pe care toată lumea trebuie să o folosească, dar care se bazează pe o altă temă pentru toate părțile de șabloane pe care nu le oferă. Ceea ce doriți sunt șabloanele:

http://codex.wordpress.org/Theme_Development#Defining_Custom_Templates

Practic, creați un nou fișier de temă în directorul rădăcină al temei (de exemplu foobar.php) și scrieți acest lucru în partea de sus:

/*
Template Name: Foobar
*/

Aceasta vă va oferi un nou șablon numit Foobar (evident, schimbați Foobar cu orice doriți. Acesta este numele care va apărea în meniul derulant pe pagina de editare).

Momentan, WordPress acceptă șabloane doar pentru pagini și tipuri de postări personalizate, nu pentru postări. Există modalități de a rezolva acest lucru, cum ar fi verificarea unei meta-informații pentru postări și extragerea acesteia la includerea șablonului:

function my_post_templater($template){
  if( !is_single() )
    return $template;
  global $wp_query;
  $c_template = get_post_meta( $wp_query->post->ID, '_wp_page_template', true );
  return empty( $c_template ) ? $template : $c_template;
}

add_filter( 'template_include', 'my_post_templater' );

function give_my_posts_templates(){
  add_post_type_support( 'post', 'page-attributes' );
}

add_action( 'init', 'give_my_posts_templates' );

Dacă adăugați acest cod în fișierul functions.php al temei dvs., ar trebui să funcționeze (atâta timp cât aveți efectiv șabloane personalizate în folderul temei).

Pentru mai multe informații despre temele copil, citiți aici:

http://codex.wordpress.org/Child_Themes

9 sept. 2010 16:44:31
Comentarii

Mulțumesc John, ai dreptate. Am schimbat titlul deoarece am realizat că nu caut de fapt un "child theme" ci mai degrabă un template. Totuși, doresc ca template-ul să folosească layout-ul existent al temei principale (index.php, single.php, page.php, etc) și să extragă informațiile de stil din styles/mytemplate/style.css. Cum pot face asta?

Scott B Scott B
9 sept. 2010 16:54:50

Cum se alege un template pentru un custom post type? Din câte știu, template-urile selectabile prin atributele paginii funcționează doar pentru pagini.

Michael Michael
11 feb. 2016 08:52:21
0

Începând cu WordPress 4.7+, puteți adăuga 'Template Post Type' în fișierul șablon personalizat pentru a-l afișa în atributele paginii atât pentru pagini, cât și pentru articole.

/*
  Nume șablon: Numele tău de șablon
  Tip post șablon: post, page
*/
19 sept. 2020 22:57:30