it-swarm-es.com

¿Agregar una plantilla al panel de atributos de página para publicaciones y páginas?

Me gustaría mantener mi tema principal como el tema activo, pero permitir a los usuarios seleccionar un diseño ligeramente diferente a través del "Página/Publicar atributos" panel. Idealmente, me gustaría almacenar este diseño en el directorio "styles" de mi tema principal, en su propia carpeta.

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

De modo que en el "Atributos de la página" panel, veo una plantilla llamada "Mi-especial-diseño" ...

Sin embargo, tengo dos problemas ...

  1. Parece que no consigo que el tema "niño" aparezca en el "Atributos de página" panel. (Simplemente estoy agregando una carpeta en mi directorio de tema principal y colocando un archivo style.css allí que tiene el valor "Template: my_main_theme_directory"). Pero nunca veo que aparezcan plantillas en el panel de "atributos de página".

  2. No puedo obtener el "Atributos de la página" panel en el POST editor. Me gustaría permitir que la plantilla se aplique a Mensajes así como Páginas . ¿Cómo conseguir este panel en el editor de post?

3
Scott B

No estás haciendo temas infantiles bien. Un tema secundario es un tema separado que todos deben usar, pero se basa en otro tema para todas las partes de la plantilla que no proporciona. Lo que quieres es plantillas:

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

Básicamente, simplemente cree un nuevo archivo de tema en el directorio raíz del tema (por ejemplo, foobar.php) escriba esto en la parte superior:

/*
Template Name: Foobar
*/

Eso te dará una nueva plantilla llamada Foobar (obviamente, cambia Foobar a lo que quieras. Ese es el nombre que aparecerá en el menú desplegable en la página del editor).

A partir de ahora, WordPress solo admite plantillas para páginas y tipos de publicaciones personalizadas, no publicaciones. Hay formas de piratear esto, como buscar un meta de publicaciones en las publicaciones y tirar de ellas en la plantilla:

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

Si coloca ese código en el archivo functions.php de su tema, debería funcionar (siempre y cuando tenga plantillas personalizadas en su carpeta de temas).

Para más información sobre temas infantiles, lea aquí:

http://codex.wordpress.org/Child_Themes

4
John P Bloch