2012-07-02 2 views
1

Я хочу установить некоторые значения по умолчанию в моих параметрах темы wordpress, так что, когда тема активирована, я могу получить значения по умолчанию для полей. Ниже приведен мой код, он отображает значения по умолчанию на странице параметров темы, но я не могу получить значения по умолчанию в переменных перед тем, как сохранить параметры. Есть ли способ получить значения по умолчанию из параметров темы перед сохранением? Благодарю.получение значений по умолчанию из параметров темы wordpress

//set default options 
$sa_options = array(
    'footer_copyright' => '© ' . date('Y') . ' ' . get_bloginfo('name'), 
    'intro_text' => 'some text', 
    'featured_cat' => ''  
); 


//register settings 
function sa_register_settings() { 
    register_setting('sa_theme_options', 'sa_options', 'sa_validate_options'); 
} 
add_action('admin_init', 'sa_register_settings'); 


//add theme options page 
function sa_theme_options() { 
    add_theme_page('Theme Options', 'Theme Options', 'edit_theme_options', 'theme_options', 'sa_theme_options_page'); 
} 
add_action('admin_menu', 'sa_theme_options'); 


// Function to generate options page 
function sa_theme_options_page() { 

    global $sa_options; 

    <?php if (false !== $_REQUEST['updated']) : ?> 
    <div class="updated fade"><p><?php _e('Options saved'); ?></p></div> 
    <?php endif; ?> 

    <form method="post" action="options.php"> 

    <?php $settings = get_option('sa_options', $sa_options); ?> 

    <?php settings_fields('sa_theme_options'); ?> 

    <input id="footer_copyright" name="sa_options[footer_copyright]" type="text" value="<?php esc_attr_e($settings['footer_copyright']); ?>" /> 

ответ

2

вот как я бы это сделать: определить получить функцию настройки по умолчанию

function sa_theme_get_defaults(){ 
    return = array(
     'footer_copyright' => '&copy; ' . date('Y') . ' ' . get_bloginfo('name'), 
     'intro_text' => 'some text', 
     'featured_cat' => '' 
    ); 
} 

Затем в sa_theme_options_page() заменить:

<?php $settings = get_option('sa_options', $sa_options); ?> 

с:

<?php $settings = get_option('sa_options', sa_theme_get_defaults()); ?> 

и в вашей функции sa_validate_options() получить значения по умолчанию и цикл по массиву, например:

function sa_validate_options($input){ 
    //do regular validation stuff 
    //... 
    //... 

    //get all options 
    $options = get_option('sa_options', sa_theme_get_defaults()); 
    //update only the needed options 
    foreach ($input as $key => $value){ 
     $options[$key] = $value; 
    } 
    //return all options 
    return $options; 
} 
Смежные вопросы