问题描述:

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.

相关阅读:
Top