如何根据主题选项字段显示/隐藏某些内容?

时间:2010-09-03 作者:Bowe Frankema

我正在为我的主题构建一个主题选项页面,我已经设法让它的大部分工作正常。但现在我正试图基于一个简单的复选框来显示和隐藏主题中的某些部分。例如:

显示特色内容滑块?-是-否

当用户选择“是”时,我想在我的主题的特定模板中启用以下代码:

<?php locate_template( array( \'includes/slider.php\'), true ) ?>
那么,如何包装此代码,使其仅在单击“是”时显示?我认为这是一种有条件的陈述,但我现在知道如何处理这个问题了。由于我无法编写php,因此需要一些帮助:)该选项的名称称为bpslick\\u-featured。

提前谢谢!

1 个回复
最合适的回答,由SO网友:Chris_O 整理而成

@Bowe

您需要在选项函数中为复选框创建一个数组,并为其指定一个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> 
接下来在函数中添加函数。如果选中该框,则调用滑块的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\');

?>
尚未检查此代码以确保其完全按原样工作,但旨在显示在主题中使用复选框选项的示例。

结束

相关推荐

WP-ADMIN似乎正在重定向

我的w-admin登录有一个奇怪的问题。这是从我升级到3.0以后才开始的,当我转到wp admin时,登录表单显示正常,但当我输入用户名并通过时,每次都会再次显示登录表单。使用密码恢复功能会导致电子邮件未找到错误。我知道用户名密码和电子邮件是正确的,b/c我可以访问mysql数据库,我可以看到值(至少用户名和电子邮件) 有人知道会出什么问题吗