Wordpress сохранение метабокса дара не работает

это весь мой код... возможно, я сделал что-то не так, потому что функция сохранения не работает. я не знаю, где и как я допустил ошибку.. Я создал CPT и метабоксы для выбора динамиков с выбором нескольких элементов и еще один метабокс с деталями для потоковой передачи радио .... вероятно, я поставил много мета-боксов... я не знаю помоги мне

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

person zen    schedule 25.10.2013    source источник
comment
Если вы делаете отступ в своем коде логическим образом, это гораздо проще для вас и для нас.   -  person brasofilo    schedule 25.10.2013
comment
Вы уверены, что следуете правильному синтаксису? <?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?> В вашем коде идентификатор поста — $post_id, $meta_key — «speaker_id», а $meta_value — $_POST['speaker_id']. Но у вас нет поля формы с именем Speaker_id, оно должно работать для schdule_dj-запустить и передать. Проверьте свои операторы if, а также напишите error_log(); чтобы увидеть, получает ли функция сохранения post_id. Где ваш код add_action('admin_menu', 'palinsesto_box'); ?   -  person Ali Exalter    schedule 25.10.2013
comment
@b__ я сделал... не могли бы вы мне помочь... я не вижу ссылку в моем пользовательском столбце   -  person zen    schedule 26.10.2013


Ответы (1)


Ваш код сохраняет поле в мета-поле, но вам следует поискать хорошие примеры add_meta_box + save_post на WPSE.

Для столбцов не следует заменять исходные, а добавлять свои (и не нужно 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.

person brasofilo    schedule 26.10.2013