2015-11-09 2 views
1

Я работаю над настройками плагина. Сначала я сохранить плагин настройки в обычном режиме, и она прекрасно работаетПараметры настройки плагина не сохраняются wordpress

Вот мой старый код:

index.php

add_action('admin_init', '_register_settings'); 
function _register_settings() { 
    register_setting('_settings_group', '_plugin_slug'); 
    register_setting('_settings_group', '_article_qty'); 
    register_setting('_settings_group', '_search_setting'); 
    register_setting('_settings_group', '_breadcrumbs_setting'); 
    register_setting('_settings_group', '_sidebar_home'); 
    register_setting('_settings_group', '_sidebar_inner'); 
    register_setting('_settings_group', '_comments_setting'); 
    register_setting('_settings_group', '_bgcolor'); 
} 

и settings.php

<?php 
    if(isset($_GET['settings-updated'])){ 
     echo 'Settings updated successfully'; 
    } 
?> 
<form method="post" action="options.php"> 
<?php 
    settings_fields('_settings_group'); 
?> 
<input type="text" name="_plugin_slug" id="_plugin_slug" value="<?php echo get_option('_plugin_slug'); ?>"> 

// Same other input fields 

<input type="submit" value="<?php _e('Save Changes','foo'); ?>" name="submit" id="submit"> 

Это прекрасно сохраняет мои значения, но теперь я меняю код на регистрацию настроек и вызываю его значения, но не работает, всякий раз, когда я сохраняю значения, он показывает мне пустую страницу после отправки формы.

Вот мой новый код:

index.php

add_action('admin_init', '_register_settings'); 
function _register_settings() { 
    register_setting('_settings', '_settings', '_validate_settings'); 
} 

function kbe_validate_settings($input) { 
    $_clean = array(); 

    $_clean['_plugin_slug'] = isset($input['_plugin_slug']) ? sanitize_title($input['_plugin_slug']) : ''; 
    $_clean['_article_qty'] = intval($input['_article_qty']); 

    $_clean['_search_setting'] = isset($input['_search_setting']) && $input['_search_setting'] ? 1 : 0 ; 
    $_clean['kbe_breadcrumbs_setting'] = isset($input['_breadcrumbs_setting']) && $input['_breadcrumbs_setting'] ? 1 : 0 ; 

    $sidebar_positions = array(0, 1, 2); 

    $_clean['_sidebar_home'] = isset($input['_sidebar_home']) && in_array($input['_sidebar_home'], $sidebar_positions) ? intval($input['_sidebar_home']) : 0; 
    $_clean['_sidebar_inner'] = isset($input['_sidebar_inner']) && in_array($input['_sidebar_inner'], $sidebar_positions) ? intval($input['_sidebar_inner']) : 0; 

    $_clean['_comments_setting'] = isset($input['_comments_setting']) && $input['_comments_setting'] ? 1 : 0 ; 

    $_clean['_bgcolor'] = isset($input['_bgcolor']) ? sanitize_hex_color($input['_bgcolor']) : ''; 

    return $_clean; 
} 

и settings.php

<?php 
    $_defaults = array( 
     '_plugin_slug' => 'Knowledgebase', 
     '_article_qty' => 5, 
     '_search_setting' => 0, 
     '_breadcrumbs_setting' => 0, 
     '_sidebar_home' => 0, 
     '_sidebar_inner' => 0, 
     '_comments_setting' => 0, 
     '_bgcolor' => '' 
    ); 

    $_settings = wp_parse_args(get_option('_settings'), $_defaults); 
?> 

<form method="post" action="options.php"> 
<?php 
    settings_fields('_settings'); 
?> 
<input type="text" name="_settings[_plugin_slug]" id="_plugin_slug" value="<?php echo esc_attr($_settings['_plugin_slug']); ?>"> 

// Same other fields 

Так где я делаю ошибка?

ответ

0

Хорошо, у меня есть твоя проблема. Сделайте некоторые изменения в вашем коде.

В index.php Удалить эту функцию из BGCOLOR проверки

sanitize_hex_color(); 

Remeber удалить только функцию не является полной строки, например,

$_clean['_bgcolor'] = isset($input['_bgcolor']) ? sanitize_hex_color($input['_bgcolor']) : ''; 

Для изменения этого кода

$_clean['_bgcolor'] = isset($input['_bgcolor']) ? $input['_bgcolor'] : ''; 

А теперь сделать некоторые изменения в settings.php. Добавьте этот код перед формой

if(isset($_settings['update'])){ 
    unset($_settings['update']); 
      update_option('_settings', $_settings); 
} 

И добавить скрытое поле ввода до кнопки отправки

<input type="hidden" name="_settings[update]" value="update" /> 

Надеется, что это поможет вам

+0

Thanx омера Вы экономите мой день – deemi

Смежные вопросы