Zeige Array von Meta-Wert in Post Colum bearbeiten

was ich versuche zu tun ist eine neue Kolumne hinzufügen zu bearbeiten Post-Seite (fertig) und in dieser Spalte zeigen Daten aus einer Reihe von benutzerdefinierten Feldern (teilweise getan).

Das ist mein Code (ich benutze ihn als Plugin, damit er einfacher zu modifizieren ist). Es fügt die Metabox in den Pfosten hinzu, also kann ich leicht kundenspezifische Felder hinzufügen.

 __('Proprietario','maismeta'), 'desc' => __('Inserisci le informazioni sul proprietario.','maismeta'), 'id' => $prefix.'textarea_proprietario', 'type' => 'textarea', ), array ( 'label' => __('Sesso affittuario','maismeta'), 'desc' => __('Inserisci il sesso disponibile.','maismeta'), 'id' => $prefix.'checkbox_group_sesso', 'type' => 'checkbox_group', 'options' => array ( 'Uomo' => array ( 'label' => __('Uomo','maismeta'), 'value' => 'Uomo' ), 'Donna' => array ( 'label' => __('Donna','maismeta'), 'value' => 'Donna' ), 'Altro' => array ( 'label' => __('Altro','maismeta'), 'value' => 'Altro' ) ) ), array ( 'label' => __('Numero occupanti','maismeta'), 'desc' => __('Inserisci il numero degli occupanti.','maismeta'), 'id' => $prefix.'checkbox_group_occupanti', 'type' => 'checkbox_group', 'options' => array ( '1' => array ( 'label' => __('1','maismeta'), 'value' => '1' ), '2' => array ( 'label' => __('2','maismeta'), 'value' => '2' ), '3' => array ( 'label' => __('3','maismeta'), 'value' => '3' ), '4' => array ( 'label' => __('4','maismeta'), 'value' => '4' ), '5' => array ( 'label' => __('5','maismeta'), 'value' => '5' ), '6' => array ( 'label' => __('6','maismeta'), 'value' => '6' ), '7' => array ( 'label' => __('7','maismeta'), 'value' => '7' ), '8' => array ( 'label' => __('8','maismeta'), 'value' => '8' ), ) ), array ( 'label' => __('Facoltà di riferimento','maismeta'), 'desc' => __('Scegli le facoltà di riferimento.','maismeta'), 'id' => $prefix.'checkbox_group_facolta', 'type' => 'checkbox_group', 'options' => array ( 'Agraria' => array ( 'label' => __('Agraria','maismeta'), 'value' => 'Agraria' ), 'Economia' => array ( 'label' => __('Economia','maismeta'), 'value' => 'Economia' ), 'Farmacia' => array ( 'label' => __('Farmacia','maismeta'), 'value' => 'Farmacia' ), 'Giurisprudenza' => array ( 'label' => __('Giurisprudenza','maismeta'), 'value' => 'Giurisprudenza' ), 'Ingegneriea' => array ( 'label' => __('Ingegneriea','maismeta'), 'value' => 'Ingegneriea' ), 'Lettere e Filosofia' => array ( 'label' => __('Lettere e Filosofia','maismeta'), 'value' => 'Lettere e Filosofia' ), 'Lingue e letteratura straniera' => array ( 'label' => __('Lingue e letteratura straniera','maismeta'), 'value' => 'Lingue e letteratura straniera' ), 'Medicina e chirurgia' => array ( 'label' => __('Medicina e chirurgia','maismeta'), 'value' => 'Medicina e chirurgia' ), 'Scienze della formazione' => array ( 'label' => __('Scienze della formazione','maismeta'), 'value' => 'Scienze della formazione' ), 'Scienze matematiche fisiche e naturali' => array ( 'label' => __('Scienze matematiche fisiche e naturali','maismeta'), 'value' => 'Scienze matematiche fisiche e naturali' ), 'Scienze politiche' => array ( 'label' => __('Scienze politiche','maismeta'), 'value' => 'Scienze politiche' ) ) ), ); /* jQuery era qui */ // The Callback function show_custom_meta_box() { global $custom_meta_fields, $post; // Use nonce for verification echo ''; // Begin the field table and loop echo ''; foreach ($custom_meta_fields as $field) { // get value of this field if it exists for this post $meta = get_post_meta($post->ID, $field['id'], true); // begin a table row with echo ''; } // end foreach echo '
'; switch($field['type']) { // text case 'text': echo '
'.$field['desc'].''; break; // textarea case 'textarea': echo '
'.$field['desc'].''; break; // checkbox case 'checkbox': echo ' '; break; // select case 'select': echo ''; foreach ($field['options'] as $option) { echo ''.$option['label'].''; } echo '
'.$field['desc'].''; break; // radio case 'radio': foreach ( $field['options'] as $option ) { echo '
'; } echo ''.$field['desc'].''; break; // checkbox_group case 'checkbox_group': foreach ($field['options'] as $option) { echo '
'; } echo ''.$field['desc'].''; break; // tax_select case 'tax_select': echo ' Select One'; // Select One $terms = get_terms($field['id'], 'get=all'); $selected = wp_get_object_terms($post->ID, $field['id']); foreach ($terms as $term) { if (!empty($selected) && !strcmp($term->slug, $selected[0]->slug)) echo 'slug.'" selected="selected">'.$term->name.''; else echo 'slug.'">'.$term->name.''; } $taxonomy = get_taxonomy($field['id']); echo '
Manage '.$taxonomy->label.''; break; // post_list case 'post_list': $items = get_posts( array ( 'post_type' => $field['post_type'], 'posts_per_page' => -1 )); echo ' Select One'; // Select One foreach($items as $item) { echo 'ID.'"',$meta == $item->ID ? ' selected="selected"' : '','>'.$item->post_type.': '.$item->post_title.''; } // end foreach echo '
'.$field['desc'].''; break; // date case 'date': echo '
'.$field['desc'].''; break; // slider case 'slider': $value = $meta != '' ? $meta : '0'; echo '

'.$field['desc'].''; break; // image global $secondazona;$secondazona = plugin_dir_url(__FILE__); case 'image': $zonaimmi = $secondazona.'images/image.png'; echo 'https://wordpress.stackexchange.com/questions/57094/show-array-of-meta-value-in-edit-post-coloum/'.$zonaimmi.''; if ($meta) { $zonaimmi = wp_get_attachment_image_src($meta, 'medium'); $zonaimmi = $zonaimmi[0]; } echo '
 Remove Image
'.$field['desc'].''; break; // repeatable case 'repeatable': echo '+
    '; $i = 0; if ($meta) { foreach($meta as $row) { echo '
  • ||| -
  • '; $i++; } } else { echo '
  • ||| -
  • '; } echo '
'.$field['desc'].''; break; } //end switch echo '
'; // end table } function remove_taxonomy_boxes() { remove_meta_box('categorydiv', 'post', 'side'); } add_action( 'admin_menu' , 'remove_taxonomy_boxes' ); // Save the Data function save_custom_meta($post_id) { global $custom_meta_fields; // verify nonce if (!wp_verify_nonce($_POST['custom_meta_box_nonce'], basename(__FILE__))) return $post_id; // check autosave if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id; // check permissions if ('page' == $_POST['post_type']) { if (!current_user_can('edit_page', $post_id)) return $post_id; } elseif (!current_user_can('edit_post', $post_id)) { return $post_id; } // loop through fields and save the data foreach ($custom_meta_fields as $field) { if($field['type'] == 'tax_select') continue; $old = get_post_meta($post_id, $field['id'], true); $new = $_POST[$field['id']]; if ($new && $new != $old) { update_post_meta($post_id, $field['id'], $new); } elseif ('' == $new && $old) { delete_post_meta($post_id, $field['id'], $old); } } // enf foreach // save taxonomies $post = get_post($post_id); $category = $_POST['category']; wp_set_object_terms( $post_id, $category, 'category' ); } add_action('save_post', 'save_custom_meta'); /* nuova posizione */ // enqueue scripts and styles, but only if is_admin ?>

Wie Sie sehen können, habe ich zwei Kontrollkästchen: das erste mit drei möglichen Werten:

‘Uomo’, ‘Donna’, ‘Altro’ So kann der Benutzer leicht 1,2,3 oder alle Werte wählen.

Dann habe ich 2 weitere Spalten auf meiner Edit-Post-Seite:

 // ALL POST TYPES: posts AND custom post types add_filter('manage_posts_columns', 'colonne_informative_head'); add_action('manage_posts_custom_column', 'colonna_proprietario', 10, 2); // ADD NEW COLUMN function colonne_informative_head($defaults) { $defaults['custom_textarea_proprietario'] = 'Proprietario'; $defaults['custom_checkbox_group_sesso'] = 'Sesso occupanti'; return $defaults; }; // SHOW THE FEATURED IMAGE function colonna_proprietario($column_name, $post_ID) { if ($column_name == 'custom_textarea_proprietario') { $post_colonna_proprietario = get_post_meta($post_ID, 'custom_textarea_proprietario', true); if ($post_colonna_proprietario) { echo $post_colonna_proprietario; } }; if ($column_name == 'custom_checkbox_group_sesso') { $sesso_occupanti = get_post_meta($post_ID, "custom_checkbox_group_sesso", true); //check that we have a custom field if ($sesso_occupanti != "") { // Separate our comma separated list into an array $sesso_occupanti = explode(",", $sesso_occupanti); //loop through our new array foreach ($sesso_occupanti as $sesso) { echo $sesso ; } } }; }; 

Ich habe kein Problem mit column namens: custom_textarea_proprietario, weil es relativ einfach war, nur 1 Wert zu echo.

Aber ich habe keine Ahnung, wie man die Werte der zweiten Spalte namens: custom_checkbox_group_sesso echo eigentlich nur ” Array ” und nichts anderes echo . Wenn ich Php meinen Administrator öffne und nach den Daten suche, die ich speichere, kann ich das sehen:

a: 3: {i: 0; s: 4: “Uomo”; i: 1; s: 5: “Donna”; i: 2; s: 14: “Giurisprudenza”;}

Was ich in meinem Fall in diesem Fall wiederholen möchte, ist:

  • Uomo
  • Donna

Dann noch eine Kolumne mit:

  • Giurisprudenza

Ich bin fast ein Neuling in dieser Art von Dingen, also bitte sei nett mit mir und versuche, die Dinge Schritt für Schritt zu erklären.

Solutions Collecting From Web of "Zeige Array von Meta-Wert in Post Colum bearbeiten"

Der Fehler war hier: (Danke @Rarst)

  if ($column_name == 'custom_checkbox_group_sesso') { $sesso_occupanti = get_post_meta($post_ID, "custom_checkbox_group_sesso", true); //check that we have a custom field if ($sesso_occupanti != "") { // Separate our comma separated list into an array $sesso_occupanti = explode(",", $sesso_occupanti); //loop through our new array foreach ($sesso_occupanti as $sesso) { echo $sesso ; } } }; 

Ich musste nur diesen Satz löschen:

 $sesso_occupanti = explode(",", $sesso_occupanti); 

Denn wie @Rarst sagte :

Wenn Sie ein Array speichern, erhalten Sie auch ein Array zurück und müssen es nicht explodieren.