2014-10-04 122 views
0

我做了一個元框,其中包含一個多選擇項目,從自定義帖子類型中獲取他的值。 它的工作原理,但我無法挽救它...你能幫助我嗎?WordPress的 - 如何保存從metabox多個選擇項目值

function conduce_palinsesto($post){ 
?><p>Seleziona il/i conduttore/i</p> 
<p>Tieni premuto CTRL per selezionare più conduttori</p> 
<?php 
global $post; 
echo '<select name="conduce[]" id="conduce" multiple="yes">'; 
$val = get_post_meta($post->ID, 'speaker', true); 
$q = get_posts('post_type=speaker'); 

foreach ($q as $obj) 
{ 
    echo '<option value="'.$obj->ID.'" "checked="checked">'.$obj->post_title.'</option>'; 
} 
echo '</select>'; 
} 

這是我保存功能......不工作。

add_action('save_post', 'rb_speaker_save_details'); 
function rb_speaker_save_details($post_id) 
{ 
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
    return $post_id; 
} else { 
    $speak = implode(',', $_POST['conduce']); 
    update_post_meta($post_id, 'conduce', speak); 
} 
} 

回答

0

爲保存在metabox中插入/選擇的數據,您必須使用save_post action。也許你想看看WP codex中的metabox example

+0

我添加了一些選項,保存功能 – zen 2014-10-04 19:01:03

+0

它是正確的,即自定義元名稱爲「有助於」在在metabox功能中保存功能「揚聲器」? – 2014-10-04 19:14:04

+0

揚聲器是帖子類型slug – zen 2014-10-04 19:52:37

0

我知道這可能早就解決了,但這裏是答案。我遇到了同樣的問題,這就是我解決問題的方法。

保存

function rb_speaker_save_details($post_id) { 

$is_autosave = wp_is_post_autosave($post_id); 
$is_revision = wp_is_post_revision($post_id); 
$is_valid_nonce = (isset($_POST[ 'name_of_nonce' ]) && wp_verify_nonce($_POST[ 'name_of_nonce' ], basename(__FILE__))) ? 'true' : 'false'; 

if ($is_autosave || $is_revision || !$is_valid_nonce) { 
    return; 
} 

if(isset($_POST['conduce'])) { 
    $speak = implode(',', $_POST['conduce']); 
    update_post_meta($post_id, 'conduce', $speak); 
}} 

,並檢查根據所保存的數據

  echo '<option value="', $slug, '" '; 
     if(strpos($conduce_val, $slug) !==false) { echo 'selected="selected"'; } 
     echo '>',the_title(), "</option>\n";