web-dev-qa-db-fra.com

Comment afficher/masquer certains contenus en fonction d'un champ d'option de thème?

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!

1
Bowe Frankema

@ 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.

2
Chris_O