2012-10-24 39 views
1

因此,在尋找保存我的元框的最簡單的解決方案,並找到沒有什麼可以幫助我... 我想保存這些元框(我把第一個一個在下面的例子中,其他的幾乎都是重複的),我使用的保存方法完全沒有做任何事情。你能告訴我我在這裏做錯了嗎?保存方法是從另一個插件礦做了同事,但我似乎無法得到它的工作...保存元框有多個字段

add_action('admin_init','page_spec_meta'); 
function page_spec_meta() 
{ 
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;  $template_file = get_post_meta($post_id,'_wp_page_template',TRUE); 
    if ($template_file == 'index.php') 
    { 
    add_meta_box("career-meta", "Career", "career_meta", "page", "normal", "high"); 
    add_meta_box("business-meta", "Business", "business_meta", "page", "normal", "high"); 
    add_meta_box("fabulous-meta", "Fabulous", "fabulous_meta", "page", "normal", "high"); 
    add_meta_box("network-meta", "Network", "network_meta", "page", "normal", "high"); 
    add_meta_box("future-meta", "Future", "future_meta", "page", "normal", "high"); 
    } 
} 

// --- METABOX: CAREER ... CONTENTS --- // 
function career_meta(){ 
    global $post; 
    $career = get_post_meta($post->ID, 'career', true); 
?> 
    <label for="career subtitle">Subtitle</label><input type="text" class="widefat" id="career-subtitle" name="career subtitle" value="<?php echo $career; ?>" /> 
    <label for="career text 1">Left Column</label><textarea class="widefat" id="career-text-1" name="career text 1" value="<?php echo $career; ?>"></textarea> 
    <label for="career text 2">Right Column</label><textarea class="widefat" id="career-text-2" name="career text 2" value="<?php echo $career; ?>"></textarea> 
<?php } 

// --- METABOX: CAREER ... SAVE --- // 
add_action('save_post', 'save_career'); 
function save_career(){ 
    global $post; 
    update_post_meta($post->ID, "career", $_POST["career"]); 
} 

add_action('save_post','function_save_var'); 
function function_save_var() 
{ 
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
    return $post_id; 

} 

什麼工作:Metaboxes顯示我指定的頁面上,並且是可編輯的 什麼不工作:保存...

回答

1

需要訪問$_POST陣列時使用的input(或textarea)字段的name屬性。您的name s是「職業小標題」,「職業文本1」和「職業文本2」,因此您需要使用$_POST["career subtitle"],$_POST["career text 1"]$_POST["career text 2"]來訪問傳遞的值。

我不確定您是否會遇到瀏覽器轉義空間問題,PHP需要通過$_POST找到它們 - 我可能會用下劃線替換名稱中的空格,以防萬一,以防萬一例如

<label for="career_subtitle">Subtitle</label><input type="text" class="widefat" id="career-subtitle" name="career_subtitle" value="<?php echo $career; ?>" /> 

然後在save_career

update_post_meta($post->ID, "career", $_POST["career_subtitle"]); 

或者,如果你需要單獨存放的三個值:

update_post_meta($post->ID, "career_subtitle", $_POST["career_subtitle"]); 

當您檢索該值時,career_meta中的對應更改。

+0

我試過它的第一個輸入(字幕)和保存工作,但只有當我只有一行代碼輸入。我會試着弄清楚一點,我認爲這應該會給我足夠的信息來完成它:) –