Créateur de thèmes WordPress :: Formateur :: Web Designer

ACF Pro :: Ajouter des pages d’options WordPress

Publié le : 

Modifié le : 

Par : 

Dans ce tutoriel, nous verrons comment utiliser le Add-on Options Page du plugin Advanced Custom Fields (ACF) avec le thème par défaut Twenty Fifteen.

Présentation de l’add-on

Options page est réservé pour ajouter de nouvelles options dans votre back-office. Celles-ci seront accessibles par l’administrateur du futur site.

Applications possibles

Tous les champs ACF sont disponibles pour ces nouvelles options ce qui donne de nombreuses perspectives sur les possibilités disponible pour ajuster un thème par exemple. Parmi le type d’options que vous pourriez installer, voici quelques pistes.

  • Taille de police des titres
  • Couleur de certains contenus
  • Textes ou contenus spécifiques dans le header ou le footer de votre page.
  • Fond de certaines zones
  • Page d’accueil modulable avec les champs Flexible Content ou Repeater

Installer le add-on

L’installation de l’Add-on dépends de votre version d’ACF. Dans les deux cas que nous verrons, c’est une extension payante du plugin principal.

Pour la version 4, c’est un module à installer à part. Voici le lien vers ce Add-on

Pour la version 5, c’est la version PRO qui intégrera tous les Add-ons jusque là vendus séparément. Dans ce tutoriel, je me concentrerai sur cette version.

Activation sur votre site

Nous allons voir deux approches pour ajouter ces nouvelles options. Les fonctions qui suivent sont à ajouter dans le fichier functions.php de votre thème.

Réglage basique

Avec la fonction qui suit, une page Options sera ajoutée dans votre back-office.

if( function_exists('acf_add_options_page') ) {
	acf_add_options_page();
}

Nouvelle méthode

La nouvelle méthode est plus complète. Voici mon exemple:

[gist id=011f9e569ef4d5bcd56a file=acf-pro-options-page-solo.php]

Si le code ne s’affichait pas, le voir en ligne.

Détail du code

  • on regarde si la fonction ACF existe avec un conditionnel sur acf_add_options_page
  • ajout d’une page d’options principale avec acf_add_options_page qui accepte plusieurs paramètres:
  • page_title : titre de votre page dans le back-office
  • menu_title : titre de votre menu
  • menu_slug : l’URL de votre page. Elle sera utilisée par les sous-pages
  • capability : qui peut voir le menu. Pour aller plus loin, se référer aux codex WordPressAttention, parfois pour les sous-menus il faut répéter l’opération pour le masquer en fonction des rôles.
  • redirect : si false la page principale apparaît en page individuelle dans les nouvelles options. Si true, on passe directement aux sous-pages. Cette page principale sert juste à nommer ce nouveau menu.
  • Ajout d’une sous-page avec acf_add_options_sub_page qui accepte plusieurs paramètres. Les deux premiers sont identiques à la page principale. Le dernier parent_slug détermine la page parente. C’est utile si vous ajoutez plusieurs pages d’options dans votre back-office.

Résultat en image

Après installation voici le résultat dans le Back-office.

capture: Advanced Custom Fields, ajouter une page d'options dans WordPress

Vous pouvez tester ce nouveau menu avec les différents rôles de votre site en suivant le lien.

Utilisation dans votre thème

Vous avez peut-être constaté sur la capture précédente qu’ACF me fait remarquer qu’aucun groupe de champs n’est lié à cette page. Prenons un exemple basique. Je vais donner la possibilité à l’administrateur de changer la taille du titre du site et le texte du copyright. Les deux groupes de champs seront ajoutés aux deux pages d’options respectives. Évidemment, vous pouvez ajouter des champs plus variés: un logo à placer dans le header…

À noter que les groupes de champs utilisés dans ce tutoriel sont disponibles en téléchargement en bas de l’article.

Groupe de champs pour l’entête

Au moment de la création du groupe, il faut choisir le type Options et la page d’options concernée avec l’un des groupes de champs créés. Ici j’ajoute plusieurs options dont les résultats seront utilisés dans une fonction qui modifie le CSS de la page avec une balise <style> placée dans le <head>.

  • La première pour changer la taille du texte. C’est un champ nombre. Dans mon thème, je repère la zone concernée qui affiche le titre.
  • Les deux options qui suivent changent la couleur du texte.
  • La dernière option permet de masquer le slogan du titre si c’est coché.

Résultat en image pour les options d’entête

Captures: Advanced Custom Fields, nouvelles options dans WordPress

Fonction pour afficher les champs ACF

À placer dans votre fichier functions.php

[gist id=011f9e569ef4d5bcd56a file=acf-pro-options-twenty-fifteen-function-css.php]

Si le code ne s’affichait pas, le voir en ligne.

Détail du code:

  • sur le hook wp_head, j’insère des CSS directement dans la page avec la fonction gn_styles_options_acf
  • dès le début, je contrôle si ACF est actif avec if (!function_exists('get_field'))
  • si cette fonction get_field n’existe pas, je lance return ce qui a pour effet de tout stoper dans ma fonction. Dans le cas contraire, je continue
  • au début, je déclare mes variables qui récupèrent les options stockées par ACF. Remarquez qu’en plus de get_field, je dois ajouter dans les attributs de la fonction option pour ça fonctionne
  • je place la balise <styles> pour installer les CSS
  • les valeurs des CSS sont remplacées par le résultat de mes variables. Dans le cas des rem, j’ai dû jouer sur une valeur multipliée par 10 pour donner son équivalent en pixel
  • un des styles, sur la classe .site-description, est optionnel. D’où la condition pour vérifier si la variable $masquer_slogan est bien active. Autrement dit, a-t-elle une valeur stockée.

Groupe de champs pour le pied de page

Pour ce groupe, le résultat des mes champs options seront placé directement dans le fichier footer.php du thème Twenty Fifteen.

  • la première option est un champ texte simple
  • la deuxième option est un champ URL qui est nouveau dans ACF 5

Résultat en image pour les options du pied de page

Capture: Advanced Custom Fields, options pour le footer de votre site WorPress

Code utiliser dans le thème

Fichier original

[gist id=011f9e569ef4d5bcd56a file=acf-pro-options-twenty-fifteen-origine.php]

Si le code ne s’affichait pas, le voir en ligne.

Fichier modifié

[gist id=011f9e569ef4d5bcd56a file=acf-pro-options-twenty-fifteen-options.php]

Si le code ne s’affichait pas, le voir en ligne.

Détail du code

Voici le détail du code qui est beaucoup plus simple dans le footer. Je remplace les valeurs par défaut du footer par mon champ ACF. Comme pour le header, je dois ajouter option. Au tout début je contrôle comme même si le plugin est actif if (function_exists('get_field')) et si le champ a une valeur if ( get_field('gn_texte_pied_page','option'). Si oui, j’ajoute mon lien et le texte entré dans le back-office.

Ajouter une deuxième page

Dans la fonction qui suit, à ajouter à votre fichier functions.php, j’ajoute une deuxième page d’options.

Résultat en image avec une deuxième page

Capture: Advanced Custom Fields, plusieurs groupe d'options

Mise à jour de la fonction

[gist id=011f9e569ef4d5bcd56a file=acf-pro-options-page-multiple.php]

Si le code ne s’affichait pas, le voir en ligne.

Détail du code

Par rapport à la première fonction, j’ajoute juste une deuxième fois la fonction acf_add_options_page. Ici, le paramètre redirect est réglé sur false et nous accédons du coup en premier à la page principale des options « Maquette ». Dans la première, la page principale de premier niveau n’existe pas.

Liens

9 réponses

  1. […] WordPress gratuits par un spécialiste formateur à Paris. Ajouter des pages d'options WordPress avec ACF Pro (Advanced Custom Fields) Dans ce tutoriel, nous verrons comment utiliser le Add-on Options Page du plugin Advanced Custom […]

  2. bonjour 🙂

    J’ ai un site web à personnaliser. Je voudrais ajouter et afficher des nouveaux champs et taxonomies avec genesis.
    Je voulais savoir, comment faire apparaitre ses derniers avec genesis..
    Je n’ y arrive pas ^^ je crois que je suis trop novice en web pr comprendre parfaitement le php et genesis…
    :/
    J’ ai utiliser cpt ui pour ajouter des taxonimies et acf pour les champs. Je voudrai tout simplement les faire apparaitre dans la boucle d’ article , a côte de categorie..
    Et en dessous du titre de l’Article…

    C’ est possible de m’ aider ?

    1. Merci d avance !! 🙂

    2. Bonjour,
      Dans les commentaires, ça va être difficile de vous aider au stade où vous en êtes. Et je ne fais pas ce type de prestation.
      Le mieux serait de trouver un spécialiste Genesis juste pour votre modèle. Essayez sur le forum Genesis de StudioPress.

  3. Jeff

    Bonjour,

    J’ai un souci avec la function pour l’utiliser sur deux custom post type.
    Dans mon fichier functions.php j’ai mis la fonctions suivante :

    if(function_exists(‘acf_add_options_page’)) {
    acf_add_options_page(array(
    ‘page_title’ => ‘archive_infusion Options’,
    ‘menu_title’ => ‘Champs supplémentaires infusions’,
    ‘menu_slug’ => ‘options_infusion’,
    ‘capability’ => ‘edit_posts’,
    ‘parent_slug’ => ‘edit.php?post_type=infusion’,
    ‘position’ => false,
    ‘icon_url’ => ‘dashicons-images-alt2’,
    ‘redirect’ => false,
    ));
    }

    et ensuite

    if(function_exists(‘acf_add_options_page’)) {
    acf_add_options_page(array(
    ‘page_title’ => ‘archive_fruit Options’,
    ‘menu_title’ => ‘Champs supplémentaires fruits séchés’,
    ‘menu_slug’ => ‘options_fruit’,
    ‘capability’ => ‘edit_posts’,
    ‘parent_slug’ => ‘edit.php?post_type=fruit’,
    ‘position’ => false,
    ‘icon_url’ => ‘dashicons-images-alt2’,
    ‘redirect’ => false,
    ));
    }
    et quand je récupère les informations sur mes 2 archive.php des custom post type :

    Problème la deuxième option écrase la première et du coup se sont les informations de la deuxième fonction qui s’affichent partout.

    Merci à vous.

    1. Bonjour
      Bien vérifier que les clés des options n’ont pas les mêmes noms.

      1. Jeff

        ha oui j’avais pas fait attention j’ai dupliquer le nom du champ. Merci

  4. Gaëlle

    Bonjour, merci pour cet article très intéressant sur ACF.
    Je viens de découvrir ce plugin qui est vraiment top.
    Aujourd’hui je fait un site pour une ostéopathe et ma client souhaite avoir des fiches clients avec un accès sécurisé à l’aide d’un mot de passe. Est-ce possible avec ACF ?
    J’ai pas mal fouiné sur internet mais je n’ai pas trouvé LA réponse. Peut-être qu’ici je trouverais mon bonheur 🙂

    1. Bonjour Gaëlle,
      Quand la personne a le mot de passe, elle a accès à toutes le fiches?