我做了一个元数据包含一个多选项,它从自定义帖子类型获取他的值。 它有效,但我无法保存它...你能帮助我吗?
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 :(得分: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";