Wordpress保存metabox dara不起作用

时间:2013-10-25 15:19:49

标签: wordpress custom-post-type meta-boxes

这是我的所有代码....可能我做错了因为保存功能不起作用。 我没有在哪里以及如何做错了.. 我创建了CPT和用于扬声器选择的元变量选择项目多个和另一个元数据与无线电流的详细信息....可能我推了许多meta_boxes ...我不知道 帮助我

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

1 个答案:

答案 0 :(得分:0)

您的代码将字段保存在元框中,但您应该在WPSE中查找add_meta_box + save_post的好例子。

对于列,您不应该替换原件,而是添加您自己的(并且您不需要cb):

function columns_speaker($old_columns)
{
    $new_columns = array(
        'img'    => 'Immagine',
        'title'  => __('Speakers'),
        'link' => 'link',
    );
    return array_merge( $new_columns, $old_columns );
}

get_speaker_columns中,您收到了错误消息,但不是$post->ID,而是$post_id