Je construis une page Options de thème pour mon thème et j'ai réussi à en faire fonctionner la plupart. Mais maintenant, j'essaie d'afficher et de masquer certaines parties de mon thème à l'aide d'une simple case à cocher. Un exemple:
Afficher le curseur de contenu en vedette? - Oui Non
Lorsque l'utilisateur sélectionne oui, je souhaite activer le code suivant dans un certain modèle de mon thème:
<?php locate_template( array( 'includes/slider.php'), true ) ?>
Alors, comment puis-je envelopper ce code afin qu'il ne s'affiche que lorsque l'utilisateur clique sur Oui? Je pense que c'est une sorte d'énoncé conditionnel, mais j'ai maintenant une idée de la façon de l'aborder. Depuis que je ne peux pas écrire php, j'ai besoin d'aide avec ceci :) Le nom de l'option s'appelle bpslick_featured.
Merci d'avance!
@ Bowe
Vous devez créer un tableau dans votre fonction d'options pour la case à cocher, lui attribuer un état par défaut et lui attribuer le type "case à cocher". Voici un exemple en supposant que vous avez déjà le code en place pour le panneau d'administration
<?php
// Set variables for the options panel
$themename = "your_theme_name";
$themeshortname = "yt";
$mythemeoptions = array();
//The Option function
function cool_theme_options() {
global $themename, $themeshortname, $mythemeoptions;
$themeoptions = array (
array( "name" => __('Show featured content slider','your_theme_name'),
"desc" => __('When checked, the slider will be added to the home page.','your_theme_name'),
"id" => "show_featured_slider",
"std" => "false",
"type" => "checkbox"
),
);
}
//The Option Form
function my_cool_theme_admin() {
global $themename, $themeshortname, $themeoptions;
// Saved or Updated message
if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';
if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';
// The form
?>
<div class="wrap">
<h2><?php echo $themename; ?> Options</h2>
<form method="post">
<?php wp_nonce_field('theme-save'); ?>
<table class="form-table">
<?php foreach ($themeoptions as $value) {
// Output the appropriate form element
switch ( $value['type'] ) {
case 'text':
?>
<tr valign="top">
<th scope="row"><?php echo $value['name']; ?>:</th>
<td>
<?php foreach ($value['options'] as $key=>$option) {
if ($key == get_option($value['id'], $value['std']) ) {
$checked = "checked=\"checked\"";
} else {
$checked = "";
}
?>
<input type="radio" name="<?php echo $value['id']; ?>" value="<?php echo $key; ?>" <?php echo $checked; ?> /><?php echo $option; ?><br />
<?php } ?>
<?php echo $value['desc']; ?>
</td>
</tr>
<?php
break;
case "checkbox":
?>
<tr valign="top">
<th scope="row"><?php echo $value['name']; ?></th>
<td>
<?php
if(get_option($value['id'])){
$checked = "checked=\"checked\"";
} else {
$checked = "";
}
?>
<input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" value="true" <?php echo $checked; ?> />
<?php echo $value['desc']; ?>
</td>
</tr>
<?php
break;
default:
break;
}
}
?>
</table>
<p class="submit">
<input name="save" type="submit" value="Save changes" class="button-primary" />
<input type="hidden" name="action" value="save" />
</p>
</form>
<form method="post">
<?php wp_nonce_field('theme-reset'); ?>
<p class="submit">
<input name="reset" type="submit" value="Reset" />
<input type="hidden" name="action" value="reset" />
</p>
</form>
Ajoutez ensuite la fonction dans functions.php qui appelle le curseur si la case est cochée.
<?php
function cool_theme_slider_option() {
// load the custom options
global $themeoptions;
foreach ($themeoptions as $value) {
$$value['id'] = get_option($value['id'], $value['std']);
}
if ($show_featured_slider == 'true') {
locate_template( array( 'includes/slider.php'), true )
}
} // end function
add_action('wp_head', 'cool_theme_slider_option');
?>
Ce code n'a pas été vérifié pour s'assurer qu'il fonctionne exactement tel quel, mais il est destiné à montrer un exemple d'utilisation d'une option de case à cocher dans votre thème.