在设置API中实现主题选项的切换切换

时间:2019-12-09 作者:sialfa

我喜欢为我的项目的预期部分使用引导程序,但这次我需要创建一个主题设置页面来管理自定义主题的一些模板部分的激活。我想用一个开关来启用或禁用这些功能,但我不知道如何用wordpress的方式实现它。有人能给我提供一个实现的示例吗?我曾想过使用bootstrap,但这不是一个很好的选择,因为wordpress有自己的css规则集来管理后端各种输入和文本区域的样式。谢谢你的帮助。

<?php

class BSSMenu {

  public function registerSettings()
  {
    add_settings_section(
      \'swiper-settings\',
      \'Swiper slider settings\',
      [$this, \'SwiperOptions\'],
      $menu_slug
    );

    add_settings_field(
      \'swiper-autoload\',
      \'Auto init slider\',
      [$this, \'sliderSettings\'],
      $menu_slug,
      \'swiper-settings\'
    );

    register_setting( \'bs-shortcodes\', \'bs-slider\' );

  }

  public function initOptionsMenu()
  {
    extract([
      \'page_title\' => \'Bootstrap Shortcodes - Settings\',
      \'menu_title\' => \'Bootstrap Shortcodes\',
      \'capability\' => \'manage_options\',
      \'menu_slug\' => \'bs-shortcodes\',
      \'function\' => [$this, \'renderOptionsMenu\'],
    ]);
    $hook_suffix = add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function );
    //add_action( \'load-\'.$hook_suffix, [$this, \'initMenuScripts\'] );
  }


  // public function initMenuScripts()
  // {
  //   wp_enqueue_script(\'popper-js\', PLUGIN_DIR.\'/js/popper.min.js\', [\'jquery\'] );
  //   wp_enqueue_script(\'bootstrap-js\', PLUGIN_DIR.\'/js/bootstrap.min.js\', [\'jquery\'] );
  //   wp_enqueue_style(\'bootstrap-css\', PLUGIN_DIR.\'/css/bootstrap.min.css\' );
  // }

  public function renderOptionsMenu()
  {
    ?>
      <div class="container-fluid">
        <div class="row">
          <div class="col-12">
            <h1>Bootstrap Shortcodes - Swiper settings</h1>
          </div>
          <div class="col-12">
            <form action="options.php" method="POST">
              <!-- Swiper auto init -->
              <?php
                settings_fields(\'bs-shortcodes\');
                do_settings_sections(\'bs-shortcodes\');
                $options = get_option(\'bs-shortcodes\');
              ?>
                <div class="custom-control custom-switch">
                  <input type="checkbox" class="custom-control-input" name="bs-slider" id="customSwitch1" value="0" <?php checked($options[\'bs-slider\'], 1); ?>/>
                  <label class="custom-control-label" for="customSwitch1">Auto init swiper</label>
                </div>

              <?php
                submit_button();
              ?>
            </form>
          </div>
        </div>
      </div>
    <?php
  }

  // public function sliderSettings()
  // {
  //   echo \'
  //   <div class="custom-control custom-switch">
  //     <input type="checkbox" class="custom-control-input" name="bs-slider" id="customSwitch1" value="\'. get_option(\'bs-slider\') .\'">
  //     <label class="custom-control-label" for="customSwitch1">Auto init swiper</label>
  //   </div>
  //   \';
  // }

}
?>
注:我仍在练习设置API,这是因为我很难理解如何正确添加节和字段,如果我的代码中有错误,我很抱歉!它使用bootstrap 4,但我将修改代码以反映默认的wordpress css后端类。

1 个回复
SO网友:Tom

有几种方法可以实现选项页面。您可以通过Advanced Custom Fields Pro(高级自定义字段专业版)实现快速简便的选项页面(更多信息请参见:https://www.advancedcustomfields.com/resources/options-page/)

要以WordPress的方式(无需插件的帮助)进行操作,您需要遵循以下指南:https://developer.wordpress.org/plugins/settings/custom-settings-page/

一旦实现,您应该能够通过自定义选项页面保存选项。要获取值,可以使用get_option("YOUR_OPTION_KEY");.

关于样式,你是对的-WordPress有自己的CSS来支持管理页面。我建议利用它们,而不是使用引导。