2014-10-04 72 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";