Añadir una Plantilla al Panel de Atributos de Página para Posts y Páginas

9 sept 2010, 15:54:16
Vistas: 33.8K
Votos: 5

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

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

De modo que en el panel "Atributos de Página", vea una plantilla llamada "My-special-layout"...

Sin embargo, tengo dos problemas...

  1. No puedo hacer que el tema "hijo" aparezca en el panel "Atributos de Página". (Simplemente estoy añadiendo una carpeta bajo el directorio de mi 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 "atributos de página".

  2. No puedo obtener el panel "Atributos de Página" en el editor de ENTRADAS. Me gustaría permitir que la plantilla se aplique tanto a Entradas como a Páginas. ¿Cómo obtener este panel en el editor de entradas?

0
Todas las respuestas a la pregunta 2
2

No estás utilizando los temas hijos correctamente. Un tema hijo es un tema completamente separado que todos deben usar, pero que depende de otro tema para todas las partes de plantilla que no proporciona. Lo que realmente necesitas son plantillas personalizadas:

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

Básicamente, solo crea un nuevo archivo de tema en el directorio raíz del tema (por ejemplo, foobar.php) y escribe esto al inicio:

/*
Template Name: Foobar
*/

Eso te dará una nueva plantilla llamada Foobar (obviamente, cambia Foobar por lo que quieras. Ese será el nombre que aparecerá en el menú desplegable de la página de edición).

Actualmente, WordPress solo admite plantillas para páginas y tipos de publicaciones personalizados, no para entradas. Hay formas de solucionar esto, como verificar metadatos en las entradas y cargarlos al incluir 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 colocas ese código en el archivo functions.php de tu tema, debería funcionar (siempre y cuando realmente tengas plantillas personalizadas en tu carpeta de tema).

Para más información sobre temas hijos, lee aquí:

http://codex.wordpress.org/Child_Themes

9 sept 2010 16:44:31
Comentarios

Gracias John, tienes razón. Cambié el título ya que me di cuenta de que en realidad no estoy buscando un "child theme" sino más bien una plantilla. Sin embargo, quiero que la plantilla use el diseño existente del tema principal (index.php, single.php, page.php, etc) y tome su información de estilo de styles/mytemplate/style.css. ¿Cómo puedo hacer eso?

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

¿Cómo se elige una plantilla para un tipo de publicación personalizado? Por lo que sé, las plantillas seleccionables a través de los atributos de página solo funcionan para páginas.

Michael Michael
11 feb 2016 08:52:21
0

A partir de WordPress 4.7+ puedes incluir 'Template Post Type' en tu archivo de plantilla personalizada para mostrarlo en los atributos de página tanto para páginas como para entradas.

/*
  Nombre de la plantilla: El nombre de tu plantilla
  Tipo de publicación de la plantilla: entrada, página
*/
19 sept 2020 22:57:30