Outils pour utilisateurs

Outils du site


webdev:wordpress:ajout_option

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
webdev:wordpress:ajout_option [29/10/2015 17:55] dolowebdev:wordpress:ajout_option [16/01/2016 21:23] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Ajout d'une page d'option dans le backoffice ======
 +[[http://www.felix-girault.fr/html/une-page-doptions-pour-votre-theme-wordpress/]]
 +[[http://codex.wordpress.org/Adding_Administration_Menus]]
  
 +**Par défaut ces pages ne sont modifiables que par un utilisateur administrateur. Les autres ont un message "Alors, on triche ?" quand ils tentent de valider leurs mises à jour. Pour éviter ça il faut utiliser le code suivant :**
 +<Code>
 +// Modify capability
 +function my_page_capability( $capability ) {
 + return 'edit_others_posts';// Pour un éditeur
 +}
 +add_filter( 'option_page_capability_my_theme', 'my_page_capability' );
 +</Code>
 +[[http://codex.wordpress.org/add_menu_page#Notes|Doc]]
 +
 +**functions.php :**
 +<Code:php>
 +// -----------------------------------------------------------------------------
 +//                  Ajout d'une page d'options pour la langue
 +
 +// À l'initialisation de l'administration on informe WordPress des options de notre thème
 +add_action( 'admin_init', 'myThemeRegisterSettings' );
 +
 +function myThemeRegisterSettings( )
 +{
 + register_setting( 'my_theme', 'language' );
 +}
 +
 +// la fonction myThemeAdminMenu( ) sera exécutée
 +// quand WordPress mettra en place le menu d'admin
 +
 +add_action( 'admin_menu', 'myThemeAdminMenu' );
 +
 +function myThemeAdminMenu( )
 +{
 + add_menu_page(
 + 'Options du thème', // le titre de la page
 + 'Langue',            // le nom de la page dans le menu d'admin
 + 'administrator',        // le rôle d'utilisateur requis pour voir cette page
 + 'my-theme-page',        // un identifiant unique de la page
 + 'myThemeSettingsPage'   // le nom d'une fonction qui affichera la page
 + );
 +}
 +
 +function myThemeSettingsPage( )
 +{
 +?>
 + <div class="wrap">
 + <h2>Options du thème</h2>
 +
 + <form method="post" action="options.php">
 + <?php
 + // cette fonction ajoute plusieurs champs cachés au formulaire
 + // pour vous faciliter le travail.
 + // elle prend en paramètre le nom du groupe d'options
 + // que nous avons défini plus haut.
 +
 + settings_fields( 'my_theme' );
 + ?>
 +
 + <table class="form-table">
 +                                <tr valign="top">
 +                                        <th scope="row"><label for="language">Langue du thème</label></th>
 +                                        <td>
 +                                        <select name="language">
 +                                            <option value="fr"<?php if(get_option('language') == 'fr'){ echo ' selected'; } ?>>Français</option>
 +                                            <option value="en"<?php if(get_option('language') == 'en'){ echo ' selected'; } ?>>English</option>
 +                                            <option value="cn"<?php if(get_option('language') == 'cn'){ echo ' selected'; } ?>>中国</option>
 +                                            <option value="ru"<?php if(get_option('language') == 'ru'){ echo ' selected'; } ?>>русский</option>
 +                                        </select>
 +                                        </td>
 +                                </tr>
 +                        </table>
 +
 + <p class="submit">
 + <input type="submit" class="button-primary" value="Mettre à jour" />
 + </p>
 + </form>
 + </div>
 +<?php
 +}
 +
 +/* Fonction pour afficher le texte suivant la langue du thème
 + * Sert principalement pour la navigation
 + */
 +function uniPrintText($fr, $en, $cn, $ru) 
 +{
 +    if(get_option('language') == 'fr'){ echo $fr; }
 +    if(get_option('language') == 'en'){ echo $en; }
 +    if(get_option('language') == 'cn'){ echo $cn; }
 +    if(get_option('language') == 'ru'){ echo $ru; }
 +}
 +</Code>
 +
 +
 +----
 +
 +
 +**Page avec éditeur WYSIWYG**
 +<hidden><Code><?php
 +function myThemeSettingsPage( )
 +{
 +?>
 + <div class="wrap">
 + <h2>Options du thème</h2>
 +
 + <form method="post" action="options.php">
 + <?php
 + // cette fonction ajoute plusieurs champs cachés au formulaire
 + // pour vous faciliter le travail.
 + // elle prend en paramètre le nom du groupe d'options
 + // que nous avons défini plus haut.
 +
 + settings_fields( 'my_theme' );
 + ?>
 +
 + <table class="form-table">
 +                            <tr valign="top">
 +                                <th scope="row"><label for="annonce">Annonce</label></th>
 +                            </tr>
 +                            
 +                            <tr valign="top">
 +                                <td><input type="checkbox" name="afficher-annonce" value="Afficher"<?php if(get_option('afficher-annonce') == true) { echo " checked"; }?>> Afficher l'annonce</td>
 +                            </tr>
 +                            <tr valign="top">
 +                                <!--<td><textarea name="annonce" rows="10" cols="90"><?php echo get_option('annonce'); ?></textarea></td>-->
 +                                <td><?php wp_editor( get_option('annonce'), 'annonce_editor', array('textarea_name' => 'annonce') ); ?></td>
 +                            </tr>
 +                        </table>
 +
 + <p class="submit">
 + <input type="submit" class="button-primary" value="Mettre à jour" />
 + </p>
 + </form>
 + </div>
 +<?php
 +}
 +</Code></hidden>