2013-10-25 3 views
1

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

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

Если вы отделите свой код логичным способом, это намного проще *** для вас и для нас. – brasofilo

+0

Вы уверены, что используете правильный синтаксис ' 'В вашем идентификаторе почтового индекса $ post_id, $ meta_key -« speaker_id », а $ meta_value - $ _POST ['speaker_id']. Но у вас нет поля формы с именем speaker_id, оно должно работать для schdule_dj-start и передавать. Проверьте свои операторы if и напишите error_log(); чтобы узнать, получает ли функция сохранения post_id. Где вы код 'add_action ('admin_menu', 'palinsesto_box');'? –

+0

@ b__ я сделал ... вы можете мне помочь ... я не вижу ссылку в своем столбце – zen

ответ

0

Ваш код сохраняет поле в мета-поле, но вы должны искать хорошие примеры 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.

+1

большое спасибо за ваш ответ и за ссылку – zen