(nota: esta pregunta fue originalmente sobre campos personalizados, pero @MikeSchinkel tenía una mejor solución que involucra tipos de publicaciones personalizadas)
En mi sitio tengo varias páginas en las que quiero mostrar los mismos datos en la barra lateral. Por ejemplo, en una estructura como esta:
-Home
-Cars
-Volvo 850 overview
-Volvo 850 tech spec
-Volvo 850 pictures
-Porsche 911 overview
-Porsche 911 tech spec
-Porsche 911 pictures
-Roads
-Route 66 overview
-Route 66 history
-Route 66 pictures
-Pan-American Highway overview
-Pan-American Highway history
-Pan-American Highway pictures
Me gustaría que todas las páginas de Volvo 850 muestren los mismos datos en la barra lateral, todas las páginas de Porsche muestren un conjunto diferente de datos (por ejemplo, Speed, Maker, etc.).
Las páginas de Carreteras tendrían su propio conjunto de datos para cada carretera. Cars and Roads también tendría su propia plantilla de página, y la forma en que creo que obtendría la barra lateral derecha es algo así dentro de sidebar.php:
if ( is_page_template('car-profile-template.php') ) :
// show car widgets
Aquí hay una página de ejemplo, la página de fotos del Volvo 850. La misma barra lateral (izquierda) debería aparecer en las otras páginas del Volvo 850, mientras que el contenido de la derecha es solo el contenido de la página.
| Home •Cars Roads |
--------------------------------------------------------
| Overview | Volvo 840 Pictures |
| Tech Spec | (some pics) |
| •Pictures | |
------------------ |
| -Specs- | |
| Volvo 850 | |
| Speed:150mph | |
| Maker:Volvo | |
| Download PDF | |
------------------ |
| -Rating- | |
| Style:3 | |
| Safety:5 | |
| Reliablity:4 | |
------------------ |
En este ejemplo, los dos widgets de la barra lateral, Especificaciones y Calificación deberían obtener su información de un Tipo de publicación personalizado. ¿Existe un método que sería fácil de editar para el usuario final, lo que significa que tendrían que ingresar estos datos personalizados solo una vez? Es posible que no sea necesario que cada uno de los campos esté separado (es decir, todas las especificaciones podrían ingresarse dentro de un campo Editor y todas las calificaciones podrían colocarse en el campo Extracto ... tal vez)
fuente
Respuestas:
ACTUALIZAR:
Basado en la actualización de la pregunta, creo que necesito declarar explícitamente que lo que se hace en la pregunta se puede hacer con la respuesta a continuación, solo usé campos personalizados en el tipo de publicación personalizada "Auto" para cada uno de los elementos que desea mostrar en todas las páginas para un auto dado.
Si desea hacerlo, simplemente codifique la barra lateral en el
single-car.php
archivo de plantilla que incluí a continuación y luego use suif
declaración para determinar qué contenido mostrar para las diferentes URL. Podrías hacer el esfuerzo de crear widgets en tu barra lateral y desarrollar un widget personalizado donde el widget extraería la información para la ID de publicación actual, pero ¿por qué ambos a menos que estés construyendo esto como un tema para que otras personas lo usen?En realidad, hay un montón de formas sutilmente diferentes para lograr esto, pero la que sugiero debería preguntarse maravillosamente tus necesidades.
Hola @cannyboy:
En realidad, no sé cuál sería la mejor manera de compartir campos personalizados entre publicaciones. Pero esa podría ser la bandera roja que necesitas. Si algo parece demasiado difícil, tal vez ...
¿Un enfoque alternativo?
... ¿Podrías brillar la arquitectura de manera diferente ? Creo que será mucho mejor crear un tipo de publicación personalizada de "Auto" y luego puede almacenar todo para cada "página" en el tipo de publicación de Auto. Aquí hay algunas URL de muestra:
Aprender sobre los tipos de publicaciones personalizadas
Puede obtener más información sobre los tipos de publicaciones personalizadas en las respuestas a estas preguntas:
Un tipo de mensaje personalizado y una regla de reescritura
Para implementar Tipos de publicaciones personalizadas y las páginas múltiples, usaría un código como el siguiente que registra su Tipo de publicación personalizada "Auto" y luego establece una regla de reescritura para las páginas de su auto . Pon este código en el
functions.php
archivo de tu tema o en un complemento, lo que prefieras:Un archivo de plantilla de tema específico del automóvil
Entonces necesitará un archivo de plantilla específico para el automóvil en su tema ; El nombre predeterminado para esto sería
single-car.php
. Codifiqué una plantilla de inicio para usted que representa las tres URL (la (descripción general) , las 'especificaciones técnicas' y las 'imágenes' ) en una plantilla usando una declaración if para determinar qué contenido representar:Tenga en cuenta que en el ejemplo anterior estoy siendo muy simplista con el uso de
get_post_meta()
; el sitio real necesitaría tener mucha más complejidad allí.Etiquetas de plantilla aka Funciones de ayuda
Por supuesto, utilicé algunas etiquetas de plantilla, también conocidas como funciones de ayuda, para minimizar la complejidad en el archivo de plantilla en las condiciones de la declaración if . Aquí están y también puedes ponerlos en el
functions.php
archivo de tu tema :Capturas de pantalla llenas de mensajes personalizados tipo amor
Una vez que tenga todo ese código en su lugar y haya agregado una publicación de Car como Volvo 850 , puede hacer que funcione como en las siguientes capturas de pantalla:
Página de resumen
(fuente: mikeschinkel.com )
Página de especificaciones técnicas
Página de fotos
fuente
Creo que alguien podría haber respondido esto en la otra pregunta que publicó (sobre páginas principales / páginas intermedias), pero esto es lo que creo que es la mejor manera de estructurar sus datos, según lo que ha descrito:
De esa manera, solo tiene que ingresar los metacampos una vez, en la página principal, y en las páginas secundarias puede extraer esos metadatos del principal:
Por supuesto, una forma aún mejor de organizar esto sería tener un único tipo de publicación personalizada para cada modelo de automóvil que almacene toda la información del automóvil y mostrar las distintas subpáginas en función de una solicitud GET que se pasa a la página y se utiliza en la plantilla de página como un interruptor para determinar qué plantilla mostrar. De esa manera, puede evitar por completo la duplicación de datos y facilitar la adición de más información a la plantilla más adelante ...
Más detalles...
Lo he hecho de dos maneras diferentes. En un sitio donde tenía agentes (representantes de la compañía) como tipo de publicación personalizada, utilicé sus publicaciones para almacenar todos los datos relacionados con esa persona, pero en realidad nunca visualicé esa página. En cambio, tenía una página de "Listado de agentes", una página de "Registro de rendimiento del agente" y una página de "Contactar con este agente", que siempre se llamaban con una variable GET y mostraban información de la publicación correspondiente. Entonces, el enlace permanente se vería como site.com/agent-listing/?agent=john-smith .
En otro sitio, configuré toda la información en una página y construí las tres vistas para esa página en la plantilla de página. En su caso, sería algo así como site.com/cars/volvo-850/?pictures .
Y en la plantilla de página incluirías una marca para esa variable cerca de la parte superior del contenido:
fuente
Si no desea crear tipos de publicaciones personalizadas, y simplemente desea incluir una barra lateral personalizada para cada página o publicación, puede usar el complemento Graceful Sidebar. Esto permite crear contenido de barra lateral personalizado directamente desde la pantalla de publicación o edición de página utilizando campos adicionales llamados título elegante y contenido elegante. Estos se muestran en el área de la barra lateral como un widget cuando esta publicación o página se muestra en su blog. Más información sobre este complemento está disponible en http://www.mlynn.org/graceful-sidebar-plugin
fuente