2012-08-14 46 views
1

首先,我想事先爲任何天真或愚蠢的事情道歉。我是一個新手程序員,但我正在努力學習。現在,我正在嘗試爲wordpress開發一個插件,作爲我實習的一部分。插件完成大部分所需的工作,但我似乎無法使設置頁面以我想要的方式工作。我知道插件的初始化部分工作正常,但我在使用設置頁面時遇到了問題。具體來說,我沒有在哪裏或如何使用_POST爲了保存信息。我從設置頁面收到信息後,也不會在何處放置update_option函數調用。這裏是我的代碼現在:爲WordPress定製PHP插件中的儲蓄設置

add_action('admin_menu', 'menu'); 
add_action('admin_init', 'plugin_admin_init'); 

function plugin_admin_init() { // whitelist options 
    register_setting('plugin_options', 'plugin_options', 'plugin_options_validate'); 
    add_settings_section('plugin_main', 'Main Settings', 'plugin_section_text',   'plugin'); 
    add_settings_field('plugin_text_string', 'REE View Count Settings',   'plugin_setting_string', 'plugin', 'plugin_main'); 
} 

function menu() { 
    add_options_page('REE View Count Options', 'REE View Count', 'manage_options',  'plugin', 'plugin_options_page'); 
} 

// generates the settings web page 
function plugin_options_page() { 
    echo '<div class="wrap">'; 
    echo '<h2>Options</h2>'; 
    echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">'; 
    // In the line above, I don't know what to put. The file name of the plugin? 
    // The URL of the settings page on the admin page? Or what I have currently? 
    // Both the first and last options bring up a 404 page. 
    settings_fields('plugin_options'); 
    do_settings_sections('plugin'); 
    echo '<input name="Submit" type="submit" value="' . esc_attr_e('Save Changes') . '"   />'; 
    echo '</form>'; 
    //update_option('plugin_options', $_POST['plugin_options']); 
    // Where should I try to update the option? And how? 
    echo '</div>'; 
} 

//from add_settings_section parameter 3, in plugin_admin_init 
function plugin_section_text() { 
    echo '<p>Main description of this section here.</p>'; 
} 

//Function from 3 paramter of add_settings_field in plugin_admin_init that outputs  input HTML 
function plugin_setting_string() { 
    $options = get_option('plugin_options'); 
    echo 'value of options is: ' . $options; 
    echo "<input id='plugin_text_string' name='plugin_options' size='40' type='text' 
    value='{$options}' />"; 
} 

//Validation function from register_setting in plugin_admin_init 
function plugin_options_validate($input) { 
    echo "this is input: " . $input; 
    $newinput = trim($input); 
    if(!preg_match('/^[0-9]+$/', $newinput)) { 
     $newinput = 10; 
    } 
    update_option('plugin_options', $newinput); 
    return $newinput; 
} 

注:我不實際使用這些確切功能/變量名 - 我已經與他們的實際插件名稱前綴。

你能幫我嗎?我想將管理員輸入的信息帶入設置頁面,並用該信息更新數據庫(在這種情況下,這只是一個單一的數字)。我知道我需要使用PHP _POST,但我不知道如何。此外,我不會在哪裏發佈,因爲當我使用action =「the_file_name.php」時,提交時會出現404錯誤。該表單的動作應該如何,以便我可以使用從管理員提交的信息並在以後使用它?在我這樣做之後,如何更新設置?而我的意思是,我在哪裏放置update_option?我很抱歉,如果這看起來有點刺耳或模糊 - 我覺得我有點頭大。

如果有幫助,我一直在建設這個設置頁面在同一個文件作爲插件本身,本指南的幫助:http://ottopress.com/2009/wordpress-settings-api-tutorial/

不幸的是,我沒有看到任何指南,在說話更新信息,只是創建頁面本身。

回答