web-dev-qa-db-fra.com

Le meilleur moyen de présenter les options pour la page d’accueil dans l’administrateur?

J'ai un site avec une page d'accueil personnalisée, home.php. Quelle est la bonne façon de présenter les options de page d'accueil modifiable dans l'outil d'administration?

Par exemple, il y a quelques champs de texte personnalisés sur la page d'accueil qui devraient être modifiables dans l'outil d'administration. Je cherche le meilleur moyen de le configurer afin qu'un utilisateur administrateur puisse modifier ces options.

UPDATE: imaginez un site avec une page d'accueil avec un texte promotionnel promotionnel (chaîne de texte) dont j'ai besoin pour pouvoir laisser des utilisateurs administrateurs ) mettre à jour facilement. J'essaie de comprendre comment présenter un écran dans admin qui dit "Quel texte promotionnel voulez-vous sur la page d'accueil? [ _ __ _ __ _ __ _ ____ ] "? J'ai pensé faire cela via un widget, mais cette route est complexe et nécessite de créer une barre latérale spéciale pour contenir le widget unique. Quelle est la meilleure façon d'aborder cela?

6
Eric

Il existe de nombreuses solutions à ce problème. Et chacun d'entre eux est correct, je suppose. Cela dépend de ce que vous voulez vraiment et de ce qui sera le plus convivial/clair pour l'utilisateur/l'administrateur de cette page.

J'utilise généralement 3 façons de résoudre ce problème. Lequel d'entre eux j'ai choisi? Cela dépend de la situation. Parfois, j'en utilise 2 simultanément.

1. Solution de page de garde statique.

Lorsque je peux définir une page statique comme page de couverture, je le fais. Créez ensuite un modèle de page front-page.php et utilisez-le pour définir l'apparence de la page d'accueil/page d'accueil.

Pour afficher/autoriser à modifier certains champs personnalisés sur cette page, j'utilise le plugin Champs personnalisés avancés . Il vous permet de définir des champs personnalisés pour la page de couverture (et bien plus encore). Ensuite, j'utilise le modèle front-page.php pour afficher les valeurs de ces champs personnalisés, où elles doivent être affichées.

Si certaines de ces valeurs doivent être répétées sur chaque page (dans le pied de page, dans l'en-tête, etc.), j'obtiens ces valeurs à partir de la page d'accueil comme suit:

$cf_value = get_post_meta( get_option('page_on_front'), '<CUSTOM FIELD NAME>', true );

C'est une solution très simple et propre, lorsqu'il n'y a pas beaucoup de champs qui doivent être répétés sur d'autres pages. C'est convivial, je suppose. Si vous souhaitez modifier la page d'accueil, il vous suffit d'aller le faire - vous pouvez tout éditer dans l'éditeur de page d'accueil.

2. Solution universelle.

L’autre solution que j’utilise consiste à définir certaines options de thème. C'est beaucoup mieux lorsque vous voulez définir l'apparence de la page (logo, arrière-plans, etc.), et pas seulement le contenu (surtout si vous voulez parler du contenu d'une seule page).

J'utilise habituellement OptionTree plug-in pour le faire. Mais ce n'est pas si difficile de faire ça tout seul.

Je n'aime pas trop l'idée de modifier le contenu de la page dans les options de thème. Je n'utilise donc pas cette solution très souvent.

3. Quand ce contenu est toujours répété sur d'autres pages

Parfois, vous devez afficher des valeurs sur chaque page (ou la plupart) et pas seulement sur la page d'accueil. Ensuite, je pense que la solution la plus "agréable" consiste à définir ces zones en tant que barres latérales et à permettre à l'utilisateur de les modifier à l'aide de widgets.

Si ce contenu répété ne représente qu'une ligne (ligne d’information sur le droit d’auteur dans le pied de page, etc.) et qu’il ne sera pas souvent remplacé, j’utiliserai probablement la solution 1. Mais si le contenu est plus complexe ou change souvent, cette solution est mieux, je suppose.

11
Krzysiek Dróżdż

Je suggère de créer un metabox pour le modèle de page home.php. Cela se fait facilement avec le plugin Advanced Custom Fields (ACF). Vous pouvez même utiliser "ACF Lite" si vous souhaitez les intégrer à votre thème, au lieu d'utiliser le plugin. Voici un moyen simple et rapide de mettre en œuvre exactement ce que vous recherchez.

  • Créer une métabox personnalisée qui apparaît uniquement sur la page qui utilise le fichier modèle "home.php".
  • Ajoutez-le facilement à votre fichier de modèle home.php et créez un style personnalisé.

J'ai pu créer la metabox et créer une sortie de style personnalisé dans le fichier de modèle en moins de 5 minutes. Voici le code que j'ai utilisé et le processus pas à pas.

  1. Installez le plugin ACF et activez-le. (Recherchez des champs personnalisés avancés dans "Elliot Condon", vous pouvez le faire via votre tableau de bord WordPress ou vous pouvez le faire manuellement depuis le référentiel Wordpress ici: http://wordpress.org/plugins/advanced-custom-fields/
  2. Ajoutez le bloc de code intitulé "functions.php" au fichier "function.php" de votre thème actif.

    if(function_exists("register_field_group")) 
    {
    register_field_group(array (
        'id' => 'acf_home-page-promotional-text',
        'title' => 'Home Page Promotional Text',
        'fields' => array (
            array (
                'default_value' => '',
                'formatting' => 'none',
                'key' => 'field_51c5184b7c590',
                'label' => 'Promo Text',
                'name' => 'promo_text',
                'type' => 'text',
                'instructions' => 'What promotional text would you like?',
            ),
        ),
        'location' => array (
            array (
                array (
                    'param' => 'page_template',
                    'operator' => '==',
                    'value' => 'home.php',
                    'order_no' => 0,
                    'group_no' => 0,
                ),
            ),
        ),
        'options' => array (
            'position' => 'normal',
            'layout' => 'no_box', // change 'no_box' to 'default' for box look.
            'hide_on_screen' => array (
            ),
        ),
        'menu_order' => 0,
    ));  
    }
    
  3. Accédez à la page d'accueil (cette page doit utiliser le fichier de modèle home.php Éditer la page-> Attributs-> Modèle déroulant).

  4. Accédez à votre fichier de modèle "home.php" et ajoutez le code suivant pour afficher le contenu du métabox personnalisé auquel, dans ce cas, le "nom" de "promo_text".

    <?php if( get_field('promo_text') ) { ?>
        <h3>
            <?php echo get_field('promo_text'); ?>
        </h3>
    <?php } ?> 
    

    Remarque: get_field est une fonction du plugin ACF. Si vous préférez utiliser la fonction intégrée WP, vous pouvez utiliser: "get_post_meta ($ post_id, $ key, $ single);" au lieu. Voici un exemple de cela.

    <?php
    if( get_post_meta($post->ID, $'promo_text', true) ) { ?>
    <h3>
    <?php echo get_post_meta($post->ID, 'promo_text', true); ?>
    </h3>
    <?php } ?>
    

Voici à quoi cela ressemble lors de l'édition de la page d'accueil: enter image description here Lien vers une image plus grande

Maintenant, vous verrez la metabox. Notez que vous pouvez facilement le faire sans le plugin. Il vous suffit d'inclure le dossier du plugin dans votre dossier de thème et d'ajouter un include () au fichier functions.php de votre thème actif.

Je recommande fortement ce plugin ... il est très intuitif et contient beaucoup de documentation. Si vous utilisez ce plugin et var_dump (), vous pouvez tout comprendre très rapidement.

J'espère que ça aide!

4
nuResponse

Il est difficile de dire exactement à partir de votre question ce que vous faites, mais si vous utilisez l’API Options , alors get_option accepte un deuxième paramètre pour les valeurs par défaut. Du Codex:

$no_exists_value = get_option('no_exists_value');
var_dump($no_exists_value); /* ouput false */

$no_exists_value = get_option('no_exists_value','default_value');
var_dump($no_exists_value); /* output default_value */

Si vous utilisez l'API de personnalisations de thème , alors get_theme_mod , comme get_option , accepte également un second paramètre pour vos valeurs par défaut.

Avec l'une ou l'autre option, vous devrez créer l'interface dorsale. Si vous utilisez l'API Options, vous créez une page de configuration add_menu_page et/ou add_submenu_page , ou une de ces fonctions connexes .

Si vous utilisez le thème Customizer, et je ne suis pas sûr que cela corresponde à votre projet, , il existe un ensemble de fonctions et de techniques complètement différent .

2
s_ha_dum

Si j'étais à votre place, j'aurais ajouté le mot personnalisé à la page admin/config du thème. Ce serait plus facile pour moi car:

  • La fonctionnalité relative à la modification de la vue existe déjà dans la page d'administration du thème.
  • J'ai juste besoin d'y ajouter une nouvelle référence de variable.
  • La promo qui apparaît à la charge fait définitivement partie du thème spécifique et devrait donc faire partie des commandes du thème.

La voie à suivre consisterait à ajouter un nouveau crochet. Vous pouvez soit aller avec mon moyen préféré ici ou le moyen de raccordement général du plugin détaillé ici

1
Srihari

La façon dont je l’approcherais (et j’ai quelque chose de similaire en ce moment), est la suivante:

  1. Créez une nouvelle entrée de menu dans le menu des paramètres (Paramètres -> Paramètres de la page d'accueil) ou créez un nouvel élément de menu de la page d'accueil, sous Commentaires par exemple, ou à la fin de votre menu, ou à votre guise. Ensuite, dans ce nouvel élément de menu, créez votre page.

  2. Dans la page mentionnée à l'étape 1, vous créez tous vos paramètres d'administration pour la page d'accueil (paramètres d'installation actuels et futurs).

  3. Assurez-vous que la page (et ses liens de menu) ne sont disponibles que pour les utilisateurs administrateurs via une vérification de rôle.

  4. Si vous le souhaitez, vous pouvez créer votre solution ci-dessus dans le cadre d'un plug-in qui crée spécifiquement la page de paramètres supplémentaires et l'éloigner du thème. Parce que ce n'est pas un problème lié à un thème, mais une personnalisation de la zone d'administration.

Comme je l’ai dit plus tôt, j’ai fait quelque chose dans ce sens et créé un plugin. Cela m'aide à l'avenir. Si je veux changer de thème, je n'ai pas besoin de passer en revue ce qui doit être supprimé et conservé dans mon code.

J'espère que cela t'aides.

1
Greeso

Si je comprends bien votre question, vous souhaitez créer un panneau d’options de thème pour un administrateur WordPress. peut entrer (par exemple) 'bonjour, monde!' Dans une zone de texte, cliquez sur Enregistrer les modifications et à l'avant du site Web, "bonjour, tout le monde!" sera affiché partout où vous avez décidé de l'appeler dans votre modèle.

Vous pouvez le faire en utilisant l’API Options comme s_ha_dum en parlait, mais j’imagine que si vous pensiez que sa réponse ne contenait pas assez de détails, vous voulez probablement dire qu’il est plus compliqué que vous espériez.

Je vous conseillerais donc d'installer le plugin Option Tree qui vous permettra de créer rapidement et facilement un panneau d'options de thème (dans le menu Apparence). avec un champ de texte qui dit "Quel texte promotionnel voulez-vous sur la page d'accueil?". Il vous suffit ensuite d’appeler la valeur de cette option dans votre modèle home.php à l’aide de la fonction Arborescence des options.

J'espère que cela t'aides!

1
tacudtap