it-swarm-es.com

¿Cómo puedo mostrar/ocultar cierto contenido basado en un campo de opción de tema?

Estoy creando una página de Opciones de tema para mi tema, y ​​he logrado que la mayoría funcione bien. Pero ahora estoy tratando de mostrar y ocultar ciertas partes de mi tema en base a una simple casilla de verificación. Un ejemplo:

¿Mostrar control deslizante de contenido destacado? - Si no

Cuando el usuario selecciona sí, quiero habilitar el siguiente código en una plantilla determinada de mi tema:

<?php locate_template( array( 'includes/slider.php'), true ) ?>

Entonces, ¿cómo puedo ajustar este código para que solo se muestre cuando se hace clic en Sí? Creo que es una especie de declaración condicional, pero ahora tengo una idea de cómo abordar esto. Como no puedo escribir php, necesito ayuda con esto :) El nombre de la opción se llama bpslick_featured.

¡Gracias por adelantado!

1
Bowe Frankema

@ Bowe

Necesitará crear una matriz en la función de opciones para la casilla de verificación y asignarle a la ID un estado predeterminado y asignarle el tipo de "casilla de verificación". Aquí hay un ejemplo, suponiendo que ya tiene el código establecido para el panel de administración

<?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> 

A continuación, agregue la función en functions.php que llama al control deslizante si la casilla está marcada.

<?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');

?>

Este código no se ha comprobado para asegurarse de que funciona exactamente como está pero está destinado a mostrar un ejemplo para usar una opción de casilla de verificación en su tema.

2
Chris_O