J'ai un client dont le site fera un usage intensif des types de publication personnalisés pour configurer son site. Mais je suis entre un rocher et un endroit difficile pour leur page d'accueil demandée.
En réalité, la page d'accueil sera une pile de "pages" spécifiques dans WordPress. Fondamentalement, il y aura des pages pour: Intro , Blog , À propos de nous , Portfolio et Contactez-nous . Ils seront tous empilés les uns sur les autres afin que vous puissiez faire défiler d'une page à l'autre.
Mon premier réflexe a été d'utiliser simplement une page (appelée Home ) et d'incorporer un shortcode qui accepte les slugs de page et génère le bon ordre (ie [pageOrder]intro, blog, about-us, portfolio, contact-us[/pageOrder]
). La page utiliserait un modèle de page personnalisé pour disposer les choses, contrôler la boucle et ajouter la navigation sur le côté gauche de la page. Mais tout cela semble maladroit.
Ma solution idéale serait de créer un type de publication personnalisé (appelé Stack ) qui permet à l'utilisateur final de positionner les pages par glisser-déposer et de laisser le CPT prendre en charge la mise en page et la navigation, etc.
Le problème avec ma solution idéale est les paramètres. WordPress vous permet de sélectionner une page pour la page d'accueil par défaut du site. Mais il est lié à un type de page de publication , et je ne sais pas où le connecter pour le modifier afin que les utilisateurs puissent également sélectionner une pile comme page d'accueil par défaut.
Alors, où dois-je me connecter pour ajouter un CPT à la liste déroulante des pages disponibles pour la page d'accueil par défaut?
post_type
n'est pas déjà défini et que cepage_id
n'est pas 0) empêche tous les 404. Je peux maintenant exécuter des requêtes pour tous mes articles personnalisés, tous mes articles et toutes mes pages sans aucune interférence.Peut-être? Version raffinée de ma solution précédente .
la source
Pourquoi ne pas simplement créer un
front-page.php
fichier modèle, qui utilise soit une requête / boucle normale, soit (si une option de thème personnalisée est définie pour afficher le CPT sur la page d'accueil), génère une requête / boucle personnalisée, basée sur le CPT?Le problème est que vous devrez créer une option de thème distincte pour contrôler la sortie de la page d'accueil, tout en demandant aux utilisateurs de définir la page d'accueil sur la page statique.
Pour faciliter les choses, vous pouvez connecter votre option Thème à la lecture des paramètres, en utilisant le groupe d'options "Lecture" dans votre appel à
register_setting
via l'API Paramètres, afin qu'il s'affiche avec les options de la page d'accueil existantes.la source
front-page.php
est sélectionné automatiquement car fait partie de la hiérarchie des modèles WordPress. Pas besoin de se rappeler pourquoi cela se produit (ou besoin de le noter pour la prochaine personne).Je pense que quelque chose a peut-être changé depuis que EAMann a écrit sa mise à jour en 2011, et la fonction wpa18013_add_pages_to_dropdown () qu'il fournit ne fonctionne plus. Comme mentionné dans un commentaire de Dameer, cette fonction génère actuellement (décembre 2013) une erreur "Argument manquant 2 pour wpa18013_add_pages_to_dropdown ()"
La solution, pour moi en tout cas, était de réécrire la fonction sans ce deuxième paramètre, ou la vérification de son contenu. Le bloc de code complet devient alors:
Veuillez noter que dans l'exemple ci-dessus, le type de publication personnalisé que j'ajoute est "unbox_tabs" plutôt que "stack".
la source
J'utilise cette technique pour inclure un modèle à partir d'un plugin. Ainsi, la solution de @ ChipBennett ne s'applique pas.
Pour ajouter les CPT ( ) du plugin dans la liste des pages statiques, j'ai modifié la solution de @ EAMann comme suit:
'hierarchical' => 'false'
Référence de base v3.4.2:
légère différence de numéros de ligne dans 3.5 RC3, mais le code reste le même
la source