1
我做了一个多选项的metabox,从另一个自定义帖子的值,我会保存多个选择,并显示在管理页面。 惠特这个代码我几乎做到了,但: 多选择项和保存功能只保存一个值和列功能只显示字数组或ID ....你能帮我。WordPress的保存多个选择和自定义列错误
这是代码
function palinsesto_manager_meta_options($post)
{
wp_nonce_field('radio_schedule', 'schedule_noncename');
echo '<label for="speaker_id">';
_e("Speaker", 'speaker_id');
echo '</label> ';
$args = array('post_type' => 'speaker');
$loop = new WP_Query($args);
echo '<select name="speaker_id" id="speaker_id" multiple="multiple">';
foreach($loop->posts as $dj):
if($dj->ID == get_post_meta($post->ID, 'speaker_id', true))
{
$select = 'selected';
}else{
$select = '';
}
echo '<option value="'.$dj->ID.'" '.$select.'>'.$dj->post_title.'</option>';
endforeach;
echo '</select>';
echo '<p>Tieni premuto CTRL per selezionare più speakers</p>';
}
add_action('save_post', 'save_palinsesto_manager_meta_options');
function save_palinsesto_manager_meta_options($post_id)
{global $post;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
//if you remove this the sky will fall on your head.
return;
}else{
if(isset($_POST['speaker_id'])) {
update_post_meta($post_id,'speaker_id', esc_attr( $_POST['speaker_id']));
}
}
}
add_filter('manage_palinsesto_posts_columns', 'columns_palinsesto');
function columns_palinsesto($old_columns)
{
$new_columns = array(
'cb' => '<input type="checkbox">',
'img' => 'Immagine',
'title' => __('Palinsesto'),
'conduce' => 'Conduce',
);
return array_merge($new_columns, $old_columns);
}
add_action('manage_palinsesto_posts_custom_column', 'get_palinsesto_columns',
10, 2);
function get_palinsesto_columns($col, $post_id)
{global $post;
$conduce=get_post_meta($post_id,'speaker_id', true);
switch($col) {
case 'img':
if(has_post_thumbnail($post_id)) {
echo get_the_post_thumbnail($post_id);
} else {
echo 'Nessuna immagine!';
}
break;
case 'conduce':
echo $conduce;
break;
}
}
这是meta框部....从speaker_id
add_action('init', 'palinsesto_manager');
function palinsesto_manager() {
$labels = array(
'name' => __('Palinsesto'),
'singular_name' => __('programma'),
'add_new' => __('Aggiungi Programma'),
'add_new_item' => __('Nuovo Programma'),
'edit_item' => __('Modifica Programma'),
'new_item' => __('Nuovo Programma'),
'all_items' => __('Palinsesto'),
'view_item' => __('Visualizza '),
'search_items' => __('Cerca '),
'not_found' => __('Programma non trovato'),
'not_found_in_trash' => __('Programma non trovato nel cestino'),
);
$args = array(
'labels' => $labels,
'public' => true,
'show_ui' => true,
'rewrite' => array('slug' => 'palinsesto'),
'publicly_queryable' => true,
'has_archive' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_icon' => get_stylesheet_directory_uri() . '/images/palinsestoic.png',
'menu_position' => 5,
'supports' => array(
'title',
'thumbnail'
),
);
register_post_type('palinsesto', $args);
}
if (function_exists('add_theme_support')) {
add_theme_support('post-thumbnails');
set_post_thumbnail_size(150, 150, true);
add_image_size('cover', 260, 160);
}
add_action("add_meta_boxes", "palinsesto_box");
function palinsesto_box() {
add_meta_box("palinsesto-meta", "Speakers", "palinsesto_manager_meta_options", "palinsesto", "side");}
你贴错代码。列部分是不相关的,meta盒部分丢失。提示:缩进代码*使生活更轻松*。像这样是不可读的。对我来说没问题,因为我粘贴在我的编辑器中,并选择“自动缩进”和presto:可读代码。 – brasofilo
metabox正在工作,选择项目也是如此(从另一个自定义帖子中获取它的值)唯一的问题是它只保存一个值,而管理员显示的是word数组或id号 – zen
如果没有正确的代码来重现,则无法提供帮助该问题,请参阅:http://sscce.org – brasofilo