0

I make list of check boxes by WordPress meta-box and i can not get this value in my theme.

i can get my text value with this code

<? echo get_post_meta($post->ID, $prefix . 'text', true); ?>

But if i use this code in check box it give me "Array"

This is my Full code

<?php
$prefix = 'dbt_';
$meta_box = array(
'id' => 'my-meta-box',
'title' => 'Product Information',
'page' => 'post',
'context' => 'normal',
'priority' => 'high',
'fields' => array(
array(
        'name' => 'Colors',
        'desc'  => '',
        'id'    => $prefix.'colors',
        'type'  => 'checkbox_group',
        'options' => array (
        'one' => array (
        'label' => 'Black',
        'value' => 'one'
    ),
        'two' => array (
        'label' => 'White',
        'value' => 'two'
    ),
        'three' => array (
        'label' => 'Red',
        'value' => 'three'
    ),

        'four' => array (
        'label' => 'Blue',
        'value' => 'four'
    ),

        'five' => array (
        'label' => 'Green',
        'value' => 'five'
    ),

        'six' => array (
        'label' => 'Yellow',
        'value' => 'six'
    ),

        'seven' => array (
        'label' => 'Brown',
        'value' => 'seven'
    )
)
)
)
);

  add_action('admin_menu', 'mytheme_add_box');
// Add meta box
function mytheme_add_box() {
global $meta_box;
add_meta_box($meta_box['id'], $meta_box['title'], 'mytheme_show_box', $meta_box['page'], $meta_box['context'], $meta_box['priority']);
}

    // Callback function to show fields in meta box
function mytheme_show_box() {
global $meta_box, $post;
// Use nonce for verification
echo '<input type="hidden" name="mytheme_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />';
echo '<table class="form-table">';
foreach ($meta_box['fields'] as $field) {
// get current post meta data
$meta = get_post_meta($post->ID, $field['id'], true);
echo '<tr>',
'<th style="width:20%"><label for="', $field['id'], '">', $field['name'], '</label></th>',
'<td>';
switch ($field['type']) {
case 'checkbox_group':
foreach ($field['options'] as $option) {
    echo '<input type="checkbox" value="'.$option['value'].'" name="'.$field['id'].'[]" id="'.$option['value'].'"',$meta && in_array($option['value'], $meta) ? ' checked="checked"' : '',' />
            <label for="'.$option['value'].'">'.$option['label'].'</label><br />';
}
break;
}
echo '</td><td>',
'</td></tr>';
}
echo '</table>';
}


add_action('save_post', 'mytheme_save_data');
// Save data from meta box
function mytheme_save_data($post_id) {
global $meta_box;
// verify nonce
if (!wp_verify_nonce($_POST['mytheme_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;
}
foreach ($meta_box['fields'] as $field) {
$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);
}
}
}

any body Can help Me

It`s my first WordPress theme and i hope if i can finish it fast,

Thank you

4
  • And why is that wrong? I mean you have a group of checkbox so the returned array contains what checkboxes have been checked. You can see this in the HTML code that the name of the input's name is name="'.$field['id'].'[]" which the square bracket declares an array for PHP
    – Laxmana
    Commented Nov 23, 2014 at 20:30
  • i don't said it's not work, I said that i can not view this values in theme single page
    – Web Stair
    Commented Nov 23, 2014 at 20:32
  • Yes but you said it gives me an array. You want to know how to show the values of the array ?
    – Laxmana
    Commented Nov 23, 2014 at 20:34
  • yes i want to show the values of the array
    – Web Stair
    Commented Nov 23, 2014 at 20:36

1 Answer 1

1

You can print the values of the array like this:

$colors = get_post_meta($post->ID, $prefix . 'colors', true);

foreach($colors as $color){

    echo $color;

}
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.