it-swarm-pt.tech

Adicionando um Modelo ao Painel de Atributos da Página para Posts e Páginas?

Eu gostaria de manter meu tema principal como o tema ativo, mas permitir que os usuários selecionem um layout ligeiramente diferente através do painel "Page/Post Attributes" . Idealmente, gostaria de armazenar esse layout no diretório "styles" do meu tema principal, em sua própria pasta.

MyTheme> estilos> My-layout-especial> style.css

Então, no "Atributos da Página" panel, eu vejo um template chamado "My-special-layout" ...

No entanto, tenho dois problemas ...

  1. Eu não consigo obter o "filho" theme para aparecer no "Atributos da página" painel. (Eu estou simplesmente adicionando uma pasta no diretório principal do meu tema e colocando lá um arquivo style.css que tem o valor "Template: my_main_theme_directory"). Mas nunca vejo nenhum modelo aparecer no painel "Atributos da página".

  2. Não consigo obter o "Atributos da Página" painel no editor POST. Gostaria de permitir que o modelo seja aplicado a Posts bem como Pages . Como obter esse painel no editor de postagem?

3
Scott B

Você não está fazendo temas infantis corretamente. Um tema filho é um tema separado que todos devem usar, mas depende de outro tema para todas as partes do modelo que ele não fornece. O que você quer é modelos:

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

Basicamente, basta criar um novo arquivo de tema no diretório-raiz do tema (por exemplo, foobar.php) e escrever isso no topo:

/*
Template Name: Foobar
*/

Isso lhe dará um novo modelo chamado Foobar (obviamente, mude o Foobar para o que você quiser. Esse é o nome que aparecerá no menu suspenso na página do editor).

A partir de agora, o WordPress suporta apenas modelos para páginas e tipos de postagem personalizados, não postagens. Existem maneiras de hackear isso, como a verificação de um post meta nas postagens e o uso do template incluem:

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 você colocar esse código no arquivo functions.php do seu tema, isso deve funcionar (contanto que você tenha modelos personalizados na pasta do seu tema).

Para mais informações sobre temas infantis, leia aqui:

http://codex.wordpress.org/Child_Themes

4
John P Bloch