web-dev-qa-db-fra.com

Options communes de modèle de page unique

Je développe un thème commun pour 25 sites Web, les exigences par défaut sont remplies. Chaque site a un modèle de publication unique différent. Je dois le regrouper sous un seul thème pour ne pas avoir à coder en dur à chaque fois et à maintenir une plate-forme commune.

Les différents modèles de publication individuelle sont les suivants: blog normal/structure par onglets/vue Liste laissez tomber). Je dois créer certains composants tels que les onglets, les barres latérales, les listes et les modèles de sauvegarde pour différentes catégories. les valeurs dans les onglets peuvent provenir d'un champ personnalisé, taxonomie. L'utilisateur peut créer n nombre de modèles pour différentes catégories/tags/taxonomie et les sauvegarder. Par exemple: modèle 1 pour la catégorie sports, éducation.

J'essaie de le faire mais je n'ai aucune idée, c'est peut-être le thème atuhalpa qui s'est approché. comment le résoudre.

1
Ezhil

Il semble que vous souhaitiez que les utilisateurs puissent modifier la structure du format single.php sans utiliser le savoir-faire de WordPress (c'est peut-être pour les clients?).

Vous pouvez créer une page d’options à cet effet et permettre à l’utilisateur de sélectionner la structure de son choix.

Dans votre functions.php ou un plugin, vous utilisez un hook pour appeler une fonction lorsque WordPress charge une page. Cette fonction utilise ensuite is_single() pour vérifier que, si une seule page est requise, WordPress vérifie ensuite quel modèle unique a été sélectionné, puis modifie le modèle en cours d’appel (par défaut single.php s’il existe). Au lieu de cela, il pourrait appeler single-normal.php, single-tab.php, etc. (ou simplement single.php). Vous devez ensuite créer chacun de ceux-ci pour les différents formats.

Par exemple:

add_filter('template_include', 'template_switch');
function template_switch( $template ){
    if( is_single()) {
    switch (get_option('single-template')){
            case 'tab':
            $template = locate_template( 'single-tab.php');
            break;

            case 'list':
            $template = locate_template( 'single-list.php');
            break;

            case 'normal':
            $template = locate_template( 'single-normal.php');
            break;
        }  
    }
    return $template;
}

Le single-normal.php est peut-être superflu, vous pouvez utiliser single.php. Vous devrez également ajouter une page d'options et enregistrer l'option 'single-template' avec Wordpress. Pour plus de détails, voir Codex - Référence des options et créant des pages d'options .

Évidemment, vous devez créer les fichiers 'single-normal.php', 'single-tab.php' etc.

Modifier: Ou, plutôt que d'utiliser l'instruction switch, vous pourriez être vraiment intelligent et (si une option a été sélectionnée), il vous suffit d'appeler le modèle: 'single-'.$option.'php', où $option est le retour de la get_option('single-template'). Cela signifie que vous pouvez toujours ajouter plus de styles de modèles en créant la page appropriée et en mettant à jour les options disponibles. Le code ci-dessus peut rester inchangé: D

J'espère que cela t'aides!

1
Stephen Harris