bowefrankema
  • 0
Новичок

Как отображать/скрывать определенный контент в зависимости от поля «Параметры темы»?

  • 0

Я создаю страницу параметров темы для своей темы, и мне удалось заставить ее работать нормально. Но теперь я пытаюсь показать и скрыть определенные части моей темы с помощью простого флажка. Пример:

Показать слайдер избранного контента ? — Да нет

Когда пользователь выбирает «да», я хочу включить следующий код в определенном шаблоне моей темы:

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

Итак, как я могу обернуть этот код, чтобы он отображался только при нажатии кнопки «Да»? Я думаю, что это своего рода условное утверждение, но теперь у меня есть идея, как к этому подойти. Поскольку я не умею писать на php, мне нужна помощь с этим 🙂 Название опции называется bpslick_featured.

Заранее спасибо!

Share
  1. @Боу

    Вам нужно будет создать массив в вашей функции параметров для флажка, присвоить ему идентификатор состояния по умолчанию и присвоить ему тип «флажок». Вот пример, предполагающий, что у вас уже есть код для панели администратора.

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

    Затем добавьте функцию в functions.php, которая вызывает ползунок, если флажок установлен.

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

    Этот код не проверялся, чтобы убедиться, что он работает именно так, как есть, но предназначен для демонстрации примера использования флажка в вашей теме.

    • 0
    • Спасибо! Этот пример дал мне правильный путь. В итоге я добавил ваш первый фрагмент кода, чтобы включить флажки на моей странице параметров темы. array( «name» => «Show Slider», «desc» => «вы хотите показать слайдер?», «id» => $shortname.»_show_slider», «type» => «checkbox», » std» => «true»), а затем вызвал функцию слайдера непосредственно в моей теме (то есть не через functions.php, как вы сделали во втором примере), используя этот код: Спасибо!

      • 0

Оставить ответ

You must login to add an answer.