web-dev-qa-db-ja.com

テーマオプションフィールドに基づいて特定のコンテンツを表示/非表示にする方法

私は自分のテーマ用のテーマオプションページを作成していますが、そのほとんどをうまく機能させることができました。しかし今、私は単純なチェックボックスに基づいて私のテーマの特定の部分を表示したり隠したりしようとしています。例:

注目のコンテンツスライダーを表示しますか? - はい・いいえ

ユーザーが「はい」を選択したら、私のテーマの特定のテンプレートで次のコードを有効にします。

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

それでは、はいをクリックしたときにのみ表示されるようにこのコードをラップするにはどうすればよいでしょうか。私はそれがある種の条件付きステートメントであると思います、しかし私は今これにどのように取り組むべきか考えました。私はphpを書くことができないので、私はこれでいくらかの助けを必要とします:)オプションの名前はbpslick_featuredと呼ばれます。

前もって感謝します!

1
Bowe Frankema

@ボー

チェックボックス用のoptions関数で配列を作成し、それにidにデフォルトの状態を与え、それに "checkbox"タイプを割り当てる必要があります。これは、管理者パネル用のコードがすでに用意されていることを前提としたサンプルです。

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

?>

このコードは正確に動作することを確認するためにチェックされていませんが、テーマでチェックボックスオプションを使用する例を示すことを目的としています。

2
Chris_O