2013-03-20 25 views
0

我只是在我的theme-options.php文件中設置了一個新的輸入文本選項,該文件類似於二十一個主題代碼。如何從wordpress的主題選項獲取輸入文本?

以下是關於輸入的主題options.php代碼的一部分,我正在尋找一種方法來獲取用戶輸入到「事實」文本並在index.php頁面上顯示它的輸入:

function themename_theme_options_init() { 

register_setting(
    'themename_options',  // Options group, see settings_fields() call in themename_theme_options_render_page() 
    'themename_theme_options', // Database option, see themename_get_theme_options() 
    'themename_theme_options_validate' // The sanitization callback, see themename_theme_options_validate() 
); 

// Register our settings field group 
add_settings_section(
    'general', // Unique identifier for the settings section 
    '', // Section title (we don't want one) 
    '__return_false', // Section callback (we don't want anything) 
    'theme_options' // Menu slug, used to uniquely identify the page; see themename_theme_options_add_page() 
); 

// Register our individual settings fields 
add_settings_field('facts', __('Facts',  'themename'), 'themename_settings_field_facts', 'theme_options', 'general'); 
add_settings_field('link_color', __('Link Color',  'themename'), 'themename_settings_field_link_color', 'theme_options', 'general'); 
} 
add_action('admin_init', 'themename_theme_options_init'); 

返回主題名稱默認事實的基礎上,配色方案:

function themename_get_default_facts($color_scheme = null) { 
if (null === $color_scheme) { 
    $options = themename_get_theme_options(); 
    $color_scheme = $options['color_scheme']; 
} 

$color_schemes = themename_color_schemes(); 
if (! isset($color_schemes[ $color_scheme ])) 
    return false; 

return $color_schemes[ $color_scheme ]['default_facts']; 
} 

呈現事實的設定欄。

function themename_settings_field_facts() { 
$options = themename_get_theme_options(); 
?> 
<input type="text" name="themename_theme_options[facts]" id="facts" value="<?php echo esc_attr($options['facts']); ?>" /> 
<br /> 
<span><?php printf(__('Default facts: %s', 'themename'), '<span id="default-facts">' . themename_get_default_facts ($options['color_scheme']) . '</span>'); ?></span> 
<?php 
} 

消毒和驗證表單輸入:

function themename_theme_options_validate($input) { 
$output = $defaults = themename_get_default_theme_options(); 

// Color scheme must be in our array of color scheme options 
if (isset($input['color_scheme']) && array_key_exists($input['color_scheme'], themename_color_schemes())) 
    $output['color_scheme'] = $input['color_scheme']; 

// Facts must be characters. 
if (isset($input['facts'])) 
    $output['facts'] = '' . (ltrim($input['facts'], '')); 

// Our defaults for the link color may have changed, based on the color scheme. 
$output['link_color'] = $defaults['link_color'] = themename_get_default_link_color($output['color_scheme']); 

// Link color must be 3 or 6 hexadecimal characters 
if (isset($input['link_color']) && preg_match('/^#?([a-f0-9]{3}){1,2}$/i', $input['link_color'])) 
    $output['link_color'] = '#' . strtolower(ltrim($input['link_color'], '#')); 

return apply_filters('themename_theme_options_validate', $output, $input, $defaults); 
} 

器具主題選項爲主題定製:

function themename_customize_register($wp_customize) { 
$wp_customize->get_setting('blogname')->transport = 'postMessage'; 
$wp_customize->get_setting('blogdescription')->transport = 'postMessage'; 

$options = themename_get_theme_options(); 
$defaults = themename_get_default_theme_options(); 

$wp_customize->add_setting('themename_theme_options[facts]', array(
    'default'   => themename_get_default_facts($options['color_scheme']), 
    'type'    => 'option', 
    'sanitize_callback' => 'sanitize_text_field', 
    'capability'  => 'edit_theme_options', 
)); 

} 
add_action('customize_register', 'themename_customize_register'); 

謝謝你給任何人,可以幫助:) 謝謝!我得到它的工作:D

回答

0
---------- 
<?php 
/** 
* Theme Options 
* 
* @package WordPress 
* 
*/ 


/* Write the name and the variable_name in which you want to store the data using theme options in the array $options_array */ 
$options_array = array(
      'Facebook URL'=>'facebook_url', 
     ); 


function my_theme_options_init() { 

    // If we have no options in the database, let's add them now. 
    if (false === my_theme_options()) 
     add_option('my_theme_options', my_default_theme_options()); 

    register_setting(
     'my_options',  // Options group, see settings_fields() call in theme_options_render_page() 
     'my_theme_options' // Database option, see my_theme_options() 
    ); 
    global $options_array; 
    foreach ($options_array as $key=>$option){ 
     register_setting('my_options', $option); 
    } 

} 


add_action('admin_init', 'my_theme_options_init'); 






function my_theme_options_add_page() { 
    $theme_page = add_theme_page(
     'myers themeing', // Name of page 
     'myers themeing', // Label in menu 
     'edit_theme_options',     // Capability required 
     'my_options',       // Menu slug, used to uniquely identify the page 
     'my_theme_options_render_page' // Function that renders the options page 
    ); 

    if (! $theme_page) 
     return; 


} 
add_action('admin_menu', 'my_theme_options_add_page'); 



function my_default_schemes() { 
    $default_array = array('value' => 'Default_theme', 
      'label' => __('Default_theme', 'my'), 
      'thumbnail' => get_template_directory_uri() . '/inc/images/my.png' 
      ); 
    global $options_array; 
    foreach ($options_array as $key=>$option){ 
     $default_array[$option] =' '; 
    } 

    $default_scheme_options = array(
     'Default_theme' => $default_array, 
    ); 

    return apply_filters('my_default_schemes', $default_scheme_options); 
} 



function my_default_theme_options() { 
    $default_theme_options = array('default_scheme' => 'Default_theme'); 
    global $options_array; 
    foreach ($options_array as $key=>$option){ 
     $default_theme_options[$option] = my_default($option,'Default_theme'); 
    } 

    return apply_filters('my_default_theme_options', $default_theme_options); 
} 



function my_default($option ,$default_scheme = null) { 
    if (null === $default_scheme) { 
     $options = my_theme_options(); 
     $default_scheme = $options['default_scheme']; 
    } 

    $default_schemes = my_default_schemes(); 
    if (! isset($default_schemes[ $default_scheme ])) 
     return false; 

    return $default_schemes[ $default_scheme ][$option]; 
} 



function my_theme_options() { 
    return get_option('my_theme_options', my_default_theme_options()); 
} 

function my_theme_options_render_page() { 
    ?> 
    <div class="wrap"> 
     <?php screen_icon(); ?> 
     <h2><?php printf(__('%s Theme Options', 'my'), get_current_theme()); ?></h2> 
     <?php settings_errors(); ?> 
     <hr> 

     <div id="theme_option_main"> 

      <h2>myers themeing</h2> 
      <form method="post" enctype="multipart/form-data" action="options.php"> 
      <?php 

       settings_fields('my_options'); 
       $options = my_theme_options(); 
       $default_options = my_default_theme_options(); 
       global $options_array; 
       foreach ($options_array as $key=>$option){ 
        do_settings_sections($option); 
       } 

      ?> 

       <table class="form-table"> 
        <tr> 
         <th scope="row"><?php _e("(Use ' http:// ' for Hyperlinks)", 'my'); ?></th> 
         <td> 
          <fieldset> 
          </fieldset> 
         </td> 
        </tr> 
        <?php 
          foreach ($options_array as $key=>$option){ 

         ?> 
         <tr> 
          <th scope="row"><?php _e($key, 'my'); ?></th> 
          <td> 
           <fieldset> 
            <legend class="screen-reader-text"><span><?php _e($key, 'my'); ?></span></legend> 
            <input type="text" name="<?php echo $option ?>" id="<?php echo $option ?>" class="large-text" value="<?php echo get_option($option); ?>"></input> 
           </fieldset> 
          </td> 
         </tr> 

        <?php } ?> 


       </table> 
       <?php submit_button(); ?> 
      </form> 



     </div> 
    </div> 

    <?php 
} 
?> 

複製代碼並創建一個新的主題選項文件。在文件中的options數組中添加名稱和變量名稱,您很好。

不要忘了這個文件在你的functions.php 鏈接鏈接,它只是添加以下代碼到functions.php

require(dirname(__FILE__) . '/inc/your_file_name.php'); 
相關問題