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?
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.
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.
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.
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.
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.
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.
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,
));
}
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).
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: 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!
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 .
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 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
La façon dont je l’approcherais (et j’ai quelque chose de similaire en ce moment), est la suivante:
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.
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).
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.
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.
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!