如何在主题选项中添加类别选择选项?

时间:2013-12-02 18:00:24

标签: php wordpress

我正在尝试使用选项树在我的wordpress主题中添加一个类别选项。我在theme-option.php

中使用此代码
  <?php
    $categories = get_categories('hide_empty=0&orderby=name');
    $wp_cats = array();
    foreach ($categories as $category_list ) {
    $wp_cats[$category_list->cat_ID] = $category_list->cat_name;
    }


add_action( 'admin_init', 'custom_theme_options', 1 );

function custom_theme_options() {

  $saved_settings = get_option( 'option_tree_settings', array() );


  $custom_settings = array(
    'sections'        => array(
      array(
        'id'          => 'general',
        'title'       => 'Home Page  Settings'
      )
    ),
    'settings'        => array(

      array(
        'id'          => 'Great-Product',
        'label'       => 'Great Product',
        'desc'        => 'select great Product category',
        'type'        => 'select',
        'section'     => 'general',

   'std' => 'Choose a category',
  'options' => $wp_cats
      )
    )
  );

  if ( $saved_settings !== $custom_settings ) {
    update_option( 'option_tree_settings', $custom_settings );
  }

}
 ?>

但它没有显示任何类别。我的错在哪里?请告诉我。

2 个答案:

答案 0 :(得分:0)

您需要在函数中定义$wp_cats变量,或使用global将其带入。

选项1(全局变量)

  <?php
    $categories = get_categories('hide_empty=0&orderby=name');
    $wp_cats = array();
    foreach ($categories as $category_list ) {
    $wp_cats[$category_list->cat_ID] = $category_list->cat_name;
    }


add_action( 'admin_init', 'custom_theme_options', 1 );

function custom_theme_options() {

  global $wp_cats; /** GLOBAL!! */

  $saved_settings = get_option( 'option_tree_settings', array() );


  $custom_settings = array(
    'sections'        => array(
      array(
        'id'          => 'general',
        'title'       => 'Home Page  Settings'
      )
    ),
    'settings'        => array(

      array(
        'id'          => 'Great-Product',
        'label'       => 'Great Product',
        'desc'        => 'select great Product category',
        'type'        => 'select',
        'section'     => 'general',

   'std' => 'Choose a category',
  'options' => $wp_cats
      )
    )
  );

  if ( $saved_settings !== $custom_settings ) {
    update_option( 'option_tree_settings', $custom_settings );
  }

}
 ?>

选项2(在函数内部构建变量)

  <?php

add_action( 'admin_init', 'custom_theme_options', 1 );

function custom_theme_options() {

    $categories = get_categories('hide_empty=0&orderby=name');
    $wp_cats = array();
    foreach ($categories as $category_list ) {
    $wp_cats[$category_list->cat_ID] = $category_list->cat_name;
    }


  $saved_settings = get_option( 'option_tree_settings', array() );


  $custom_settings = array(
    'sections'        => array(
      array(
        'id'          => 'general',
        'title'       => 'Home Page  Settings'
      )
    ),
    'settings'        => array(

      array(
        'id'          => 'Great-Product',
        'label'       => 'Great Product',
        'desc'        => 'select great Product category',
        'type'        => 'select',
        'section'     => 'general',

   'std' => 'Choose a category',
  'options' => $wp_cats
      )
    )
  );

  if ( $saved_settings !== $custom_settings ) {
    update_option( 'option_tree_settings', $custom_settings );
  }

}
 ?>

答案 1 :(得分:0)

我找到了解决方案。只需要写

  'type'        => 'category-select',

而不是

  'type'        => 'select',