(Remarque: cette question concernait à l'origine les champs personnalisés, mais @MikeSchinkel avait une meilleure solution impliquant des types de publication personnalisés)
Sur mon site, j'ai plusieurs pages dont je veux afficher les mêmes données dans la barre latérale. Par exemple, dans une structure comme celle-ci:
-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
Je voudrais que toutes les pages du Volvo 850 affichent les mêmes données dans la barre latérale, toutes les pages Porsche pour afficher un ensemble de données différent (par exemple Speed, Maker, etc.).
Les pages Road auraient leur propre ensemble de données pour chaque route. Cars and Roads aurait également son propre modèle de page, et la façon dont je pense qu'il obtiendrait la barre latérale droite est quelque chose comme ceci dans sidebar.php:
if ( is_page_template('car-profile-template.php') ) :
// show car widgets
Voici un exemple de page, la page Volvo 850 Pictures. La même barre latérale (à gauche) devrait apparaître sur les autres pages du Volvo 850, tandis que le contenu à droite n'est que le contenu de la page.
| 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 | |
------------------ |
Dans cet exemple, les deux widgets de la barre latérale, Spécifications et Évaluation devraient obtenir leurs informations à partir d'un type de publication personnalisé. Existe-t-il une méthode qui serait facile à modifier pour l'utilisateur final, ce qui signifie qu'il n'aurait à saisir ces données personnalisées qu'une seule fois? Il peut ne pas être nécessaire que chacun des champs soit séparé (c.-à-d. Que toutes les spécifications peuvent être entrées dans un champ Editeur, et toutes les évaluations peuvent être placées dans le champ Extrait .. peut-être)
la source
Réponses:
METTRE À JOUR:
Sur la base de la mise à jour de la question, je pense que je dois déclarer explicitement que ce qui est demandé dans la question peut être fait avec la réponse ci-dessous, il suffit d'utiliser des champs personnalisés dans le type de message personnalisé "Voiture" pour chacun des éléments que vous souhaitez afficher sur toutes les pages pour une voiture donnée.
Si vous voulez le faire, il vous suffit de coder en dur la barre latérale dans le
single-car.php
fichier de modèle que j'ai inclus ci-dessous, puis d'utiliser votreif
déclaration pour déterminer le contenu à afficher pour les différentes URL. Vous pouvez faire l'effort de widgetiser votre barre latérale et de développer un widget personnalisé où le widget extraira les informations pour l'ID de publication actuel, mais pourquoi les deux à moins que vous ne construisiez cela comme un thème à utiliser par d'autres personnes?Il existe en fait un tas de façons subtilement différentes d'accomplir cela, mais celle que je suggère devrait se demander à merveille pour vos besoins.
Salut @cannyboy:
En fait, je ne sais pas quelle serait la meilleure façon de partager des champs personnalisés entre les messages. Mais c'est peut-être le drapeau rouge dont vous avez besoin. Si quelque chose semble trop dur peut-être ...
Une approche alternative?
... vous pourriez envisager de le concevoir différemment ? Je pense que vous ferez beaucoup mieux de créer un type de publication personnalisé de "Car" et vous pourrez alors tout stocker pour chaque "page" dans le type de publication Car. Voici quelques exemples d'URL:
En savoir plus sur les types de publication personnalisés
Vous pouvez en savoir plus sur les types de publication personnalisés aux réponses à ces questions:
Un type de publication personnalisé et une règle de réécriture
Pour implémenter les types de publication personnalisés et les pages multiples, vous utiliseriez du code comme celui-ci qui enregistre votre type de publication personnalisé «Voiture» , puis définit une règle de réécriture pour vos pages de voiture . Mettez ce code dans le
functions.php
fichier de votre thème ou dans un plugin, selon votre préférence:Un fichier de modèle de thème spécifique à la voiture
Ensuite, vous aurez besoin d'un fichier de modèle spécifique à Car dans votre thème ; le nom par défaut serait
single-car.php
. J'ai codé pour vous un modèle de démarrage qui affiche les trois URL (la (présentation) , les «spécifications techniques» et les «images» ) dans un modèle en utilisant une instruction if pour déterminer le contenu à rendre:Notez dans l'exemple ci-dessus que je suis très simpliste avec l'utilisation de
get_post_meta()
; le vrai site devrait y avoir beaucoup plus de complexité.Balises de modèle aka Fonctions d'aide
Bien sûr, j'ai utilisé certaines balises de modèle aka fonctions d'assistance pour minimiser la complexité du fichier de modèle dans les conditions de l' instruction if . Les voici et vous pouvez aussi les mettre dans le
functions.php
fichier de votre thème :Captures d'écran remplies d'amour de type de message personnalisé
Une fois que vous avez tout ce code en place et que vous avez ajouté un message de voiture comme Volvo 850, vous pouvez le faire fonctionner comme les captures d'écran suivantes:
Page de présentation
(source: mikeschinkel.com )
Page Spécifications techniques
Page d'images
la source
Je pense que quelqu'un a peut-être déjà répondu à cette question sur l'autre question que vous avez publiée (à propos des pages parent / pages intermédiaires), mais voici ce que je pense que la meilleure façon de structurer vos données est, en fonction de ce que vous avez décrit:
De cette façon, vous ne devez entrer les champs de métadonnées qu'une seule fois - sur la page parent - et sur les pages enfants, vous pouvez extraire ces métadonnées du parent:
Bien sûr, une meilleure façon d'organiser cela serait d'avoir un seul type de publication personnalisé pour chaque modèle de voiture qui stocke toutes les informations de la voiture et d'afficher les différentes sous-pages en fonction d'une demande GET transmise à la page et utilisée dans le modèle de page comme commutateur pour déterminer le modèle à afficher. De cette façon, vous pouvez éviter complètement la duplication des données et faciliter plus tard l'ajout d'informations au modèle ...
Plus de détails...
Je l'ai fait de deux manières différentes. Dans un site où j'avais des agents (représentants de l'entreprise) comme type de publication personnalisé, j'ai utilisé leurs publications pour stocker toutes les données relatives à cette personne, mais je n'ai jamais réellement affiché cette page. Au lieu de cela, j'avais une page "Liste des agents", une page "Enregistrement des performances de l'agent" et une page "Contacter cet agent", qui étaient toujours appelées avec une variable GET et affichaient des informations à partir du message approprié. Ainsi, le permalien ressemblerait à quelque chose comme site.com/agent-listing/?agent=john-smith .
Dans un autre site, j'ai mis en place toutes les informations sur une page et intégré les trois vues de cette page dans le modèle de page. Dans votre cas, cela ressemblerait à quelque chose comme site.com/cars/volvo-850/?pictures .
Et dans le modèle de page, vous incluriez une vérification pour cette variable près du haut du contenu:
la source
Si vous ne souhaitez pas créer de types de publication personnalisés et que vous souhaitez simplement inclure une barre latérale personnalisée pour chaque page ou publication, vous pouvez utiliser le plug-in Graceful Sidebar. Cela permet de créer un contenu de barre latérale personnalisée directement à partir de l'écran de publication ou de modification de page à l'aide de champs supplémentaires appelés titre gracieux et contenu gracieux. Ceux-ci sont ensuite affichés dans la zone de la barre latérale en tant que widget lorsque ce message ou cette page est affiché sur votre blog. Plus d'informations sur ce plugin sont disponibles sur http://www.mlynn.org/graceful-sidebar-plugin
la source