Outils pour utilisateurs

Outils du site


Panneau latéral

webdev:wordpress:ajout_option

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 :

// Modify capability
function my_page_capability( $capability ) {
	return 'edit_others_posts';// Pour un éditeur
}
add_filter( 'option_page_capability_my_theme', 'my_page_capability' );

Doc

functions.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; }
}

Page avec éditeur WYSIWYG

Cliquez pour afficher ⇲

Cliquez pour masquer ⇱

<?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
}
webdev/wordpress/ajout_option.txt · Dernière modification: 16/01/2016 21:23 (modification externe)