this is all my code....probably i did something wrong cause the save function don't work. i don't where and how a did a mistake.. I created the CPT and the metaboxes for the speakers selection with select item multiple and another metabox with the details for the radio streaming....probably i putted many meta_boxes...i don't know help me
<?php
add_action('init', 'speaker_manager');
function speaker_manager() {
$labels = array(
'name' => __('Speakers'),
'singular_name' => __('speaker'),
'add_new' => __('Aggiungi Speaker'),
'add_new_item' => __('Nuovo Speaker'),
'edit_item' => __('Modifica Speaker'),
'new_item' => __('Nuovo Speaker'),
'all_items' => __('Elenco Speaker'),
'view_item' => __('Visualizza '),
'search_items' => __('Cerca '),
'not_found' => __('Speaker non trovato'),
'not_found_in_trash' => __('Speaker non trovato nel cestino'),
);
$args = array(
'labels' => $labels,
'public' => true,
'show_ui' => true,
'rewrite' => array('slug' => 'speaker'),
'publicly_queryable' => true,
'has_archive' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_icon' => get_stylesheet_directory_uri() . '/images/speakers.png',
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'thumbnail'
),
);
register_post_type('speaker', $args);
}
if (function_exists('add_theme_support')) {
add_theme_support('post-thumbnails');
set_post_thumbnail_size( 220, 150 );
}
add_action("admin_init", "speaker_manager_add_meta");
function speaker_manager_add_meta(){
add_meta_box("speaker-meta", "Social", "speaker_manager_meta_options", "speaker", "normal", "high");
}
function speaker_manager_meta_options($post)
{
?>
<p>Aggiungi i profili social:</p>
<p><label for="speaker_social_link">Link al sito</label>
<input type="text" id="speaker_social_link" name="speaker_social_link"
value="<?php echo get_post_meta($post->ID, 'speaker_social_link', true); ?>"/></p>
<?php
}
add_action('save_post', 'save_speaker_social_link');
function save_speaker_social_link($post_id)
{
global $post;
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ){
//if you remove this the sky will fall on your head.
return;
}else{
update_post_meta($post_id, 'speaker_social_link', esc_url($_POST['speaker_social_link']));
}
}
add_filter('manage_speaker_posts_columns', 'columns_speaker');
function columns_speaker($old_columns)
{
$speaker_col = array(
'cb' => '<input type="checkbox">',
'img' => 'Immagine',
'title' => __('Speakers'),
'link' => 'link',
);
return $speaker_col;
}
add_action('manage_speaker_posts_custom_column', 'get_speaker_columns', 10, 2);
function get_speaker_columns($col, $post_id)
{
switch($col) {
case 'img':
if(has_post_thumbnail($post_id)) {
echo get_the_post_thumbnail($post_id);
} else {
echo 'Nessuna immagine!';
}
break;
case 'link':
echo get_post_meta($post->ID, 'speaker_social_link', true);
default:
break;
}
}
Your code is saving the field in the meta box, but you should look for good examples of add_meta_box + save_post
at WPSE.
For the columns, you should not replace the originals but add your own (and you don't need cb
):
function columns_speaker($old_columns)
{
$new_columns = array(
'img' => 'Immagine',
'title' => __('Speakers'),
'link' => 'link',
);
return array_merge( $new_columns, $old_columns );
}
In get_speaker_columns
you got an error, it's not $post->ID
but $post_id
.