Wordpress - 如何从元数据库中保存多个选择项目值

时间:2014-10-04 14:18:29

标签: wordpress save meta-boxes

我做了一个元数据包含一个多选项,它从自定义帖子类型获取他的值。 它有效,但我无法保存它...你能帮助我吗?

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);
}
}

2 个答案:

答案 0 :(得分:0)

要保存在元数据库中插入/选择的数据,您必须使用save_post action。也许你想看一下WP codex中的metabox example

答案 1 :(得分: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";