Aggiungere un Template al Pannello Attributi Pagina sia per Articoli che Pagine

9 set 2010, 15:54:16
Visualizzazioni: 33.8K
Voti: 5

Vorrei mantenere il mio tema principale come tema attivo, ma consentire agli utenti di selezionare un layout leggermente diverso tramite il pannello "Attributi Pagina/Articolo". Idealmente, vorrei memorizzare questo layout nella directory "styles" del mio tema principale, in una sua cartella dedicata.

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

In modo che nel pannello "Attributi Pagina", appaia un template chiamato "My-special-layout"...

Tuttavia, ho due problemi...

  1. Non riesco a far apparire il tema "child" nel pannello "Attributi Pagina". (Sto semplicemente aggiungendo una cartella sotto la directory del mio tema principale e inserendo un file style.css che ha il valore "Template: my_main_theme_directory"). Ma non vedo mai apparire alcun template nel pannello "attributi pagina".

  2. Non riesco a ottenere il pannello "Attributi Pagina" nell'editor degli ARTICOLI. Vorrei permettere che il template sia applicabile sia agli Articoli che alle Pagine. Come posso ottenere questo pannello nell'editor degli articoli?

0
Tutte le risposte alla domanda 2
2

Non stai utilizzando i temi figli correttamente. Un tema figlio è un tema completamente separato che tutti devono utilizzare, ma che si affida a un altro tema per tutte le parti dei template che non fornisce. Quello che vuoi sono i template:

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

In pratica, crea semplicemente un nuovo file del tema nella directory principale del tema (ad esempio foobar.php) e scrivi questo all'inizio:

/*
Template Name: Foobar
*/

Questo ti darà un nuovo template chiamato Foobar (ovviamente, cambia Foobar con quello che preferisci. Questo è il nome che apparirà nel menu a discesa nella pagina dell'editor).

Attualmente, WordPress supporta i template solo per le pagine e i tipi di post personalizzati, non per i post. Ci sono modi per aggirare questo limite, come controllare un meta post sui post e recuperarlo nell'inclusione del template:

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' );

Se inserisci questo codice nel file functions.php del tuo tema, dovrebbe funzionare (a patto che tu abbia effettivamente dei template personalizzati nella cartella del tuo tema).

Per maggiori informazioni sui temi figli, leggi qui:

http://codex.wordpress.org/Child_Themes

9 set 2010 16:44:31
Commenti

Grazie John, hai ragione. Ho cambiato il titolo perché mi sono reso conto che non sto cercando un "child theme" ma piuttosto un template. Tuttavia, voglio che il template utilizzi il layout esistente del tema principale (index.php, single.php, page.php, ecc.) e prenda le informazioni di stile da styles/mytemplate/style.css. Come posso fare?

Scott B Scott B
9 set 2010 16:54:50

Come si sceglie un template per un custom post type? Per quanto ne so, i template selezionabili tramite gli attributi della pagina funzionano solo per le pagine.

Michael Michael
11 feb 2016 08:52:21
0

A partire da WordPress 4.7+ puoi inserire 'Template Post Type' nel tuo file template personalizzato per visualizzarlo negli attributi della pagina sia per le pagine che per gli articoli.

/*
  Template Name: Nome del tuo Template
  Template Post Type: post, page
*/
19 set 2020 22:57:30