2013-06-07 4 views
0

Я только что создал своего рода длинного METABOX, используя учебник по wptuts, но я потерял две вещи:Как отделить данные в wordpress metabolox?

  1. Выход из METABOX отображает все данные сгруппированных (например, в сгруппированных флажков они все в. целое, даже если у меня разные группы), и я хотел бы получить заголовки каждой группы и отображать их в разных таблицах, div или блоках.

  2. Не знаю, как отображать сохраненные данные в сообщении, а также отображать его в отдельных блоках.

Мой код заключается в следующем:

<?php 

$prefix = 'dbt_'; 
$meta_box = array(
'id' => 'features', 
'title' => 'Property Features', 
'page' => 'post', 
'context' => 'normal', 
'priority' => 'high', 
'fields' => array(
    array(
     'name' => 'Price (in USD)', 
     'desc' => '', 
     'id' => $prefix . 'text', 
     'type' => 'text', 
     'std' => ' ' 
    ), 

     array(
     'name' => 'Price (in Mexican Peso)', 
     'desc' => '', 
     'id' => $prefix . 'text', 
     'type' => 'text', 
     'std' => ' ' 
    ), 

    array(
     'name' => 'Address', 
     'desc' => '', 
     'id' => $prefix . 'textarea', 
     'type' => 'textarea', 
     'std' => '' 
    ), 

    array(
     'name' => 'Property for', 
     'id' => $prefix . 'select', 
     'type' => 'select', 
     'options' => array('Sale', 'Rent', 'Vacational Rental') 
    ), 

    array(
     'name' => 'Area (m2)', 
     'desc' => '', 
     'id' => $prefix . 'text', 
     'type' => 'text', 
     'std' => ' ' 
    ), 

    array(
     'name' => 'Area of terrain (m2)', 
     'desc' => '', 
     'id' => $prefix . 'text', 
     'type' => 'text', 
     'std' => ' ' 
    ), 

    array(
     'name' => 'Number of rooms', 
     'desc' => '', 
     'id' => $prefix . 'text', 
     'type' => 'text', 
     'std' => ' ' 
    ), 

    array(
     'name' => 'Number of bathrooms. Include half bathrooms (ex. 2 1/2)', 
     'desc' => '', 
     'id' => $prefix . 'text', 
     'type' => 'text', 
     'std' => ' ' 
    ), 

    array(
     'name' => 'Service Bathroom', 
     'id' => $prefix . 'checkbox', 
     'type' => 'checkbox' 
), 

array(
     'name' => 'Furnished', 
     'id' => $prefix . 'checkbox', 
     'type' => 'checkbox' 
), 
array( 
     'label' => 'Property specs', 
     'desc' => '', 
     'id' => $prefix.'checkbox_group', 
     'type' => 'checkbox_group', 
     'options' => array ( 
     'one' => array ( 
     'label' => 'Livingroom', 
     'value' => 'one' 
    ), 
     'two' => array ( 
     'label' => 'Diningroom', 
     'value' => 'two' 
    ), 
     'three' => array ( 
     'label' => 'Breackfast area', 
     'value' => 'three' 
    ), 

     'four' => array ( 
     'label' => 'TV room', 
     'value' => 'four' 
    ), 

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

     'six' => array ( 
     'label' => 'Integrated Kitchen', 
     'value' => 'six' 
    ), 

     'seven' => array ( 
     'label' => 'Laundry Room', 
     'value' => 'seven' 
    ), 

     'eight' => array ( 
     'label' => 'Service room', 
     'value' => 'eight' 
    ), 

     'nine' => array ( 
     'label' => 'jacuzzi', 
     'value' => 'nine' 
    ), 

     'ten' => array ( 
     'label' => 'terrace', 
     'value' => 'ten' 
    ), 

     'eleven' => array ( 
     'label' => 'balcony', 
     'value' => 'eleven' 
    ), 

     'twelve' => array ( 
     'label' => 'Warehouse', 
     'value' => 'twelve' 
    ) 
) 
), 


    array( 
     'label' => 'Installed', 
     'desc' => '', 
     'id' => $prefix.'checkbox_group', 
     'type' => 'checkbox_group', 
     'options' => array ( 
     'one' => array ( 
     'label' => 'Air conditioner', 
     'value' => 'one' 
    ), 
     'two' => array ( 
     'label' => 'Stationary gas', 
     'value' => 'two' 
    ), 
     'three' => array ( 
     'label' => 'Water heater', 
     'value' => 'three' 
    ), 

     'four' => array ( 
     'label' => 'Hurricain shutters or hurricain protection', 
     'value' => 'four' 
    ), 

     'five' => array ( 
     'label' => 'Telephone line', 
     'value' => 'five' 
    ) 
) 
), 

    array( 
     'label' => 'Outdoors', 
     'desc' => '', 
     'id' => $prefix.'checkbox_group', 
     'type' => 'checkbox_group', 
     'options' => array ( 
     'one' => array ( 
     'label' => 'Parking space', 
     'value' => 'one' 
    ), 
     'two' => array ( 
     'label' => 'Garden', 
     'value' => 'two' 
    ), 
     'three' => array ( 
     'label' => 'Pool', 
     'value' => 'three' 
    ), 

     'four' => array ( 
     'label' => 'Tennis court', 
     'value' => 'four' 
    ), 

     'five' => array ( 
     'label' => 'Children playground', 
     'value' => 'five' 
    ) 
) 
), 

    array( 
     'label' => 'Facilities', 
     'desc' => '', 
     'id' => $prefix.'checkbox_group', 
     'type' => 'checkbox_group', 
     'options' => array ( 
     'one' => array ( 
     'label' => 'Spa', 
     'value' => 'one' 
    ), 
     'two' => array ( 
     'label' => 'Gym', 
     'value' => 'two' 
    ), 
     'three' => array ( 
     'label' => 'Party salon', 
     'value' => 'three' 
    ), 

     'four' => array ( 
     'label' => 'Snack-bar', 
     'value' => 'four' 
    ) 

) 
), 

    array( 
     'label' => 'Luxury Features', 
     'desc' => '', 
     'id' => $prefix.'checkbox_group', 
     'type' => 'checkbox_group', 
     'options' => array ( 
     'one' => array ( 
     'label' => 'Clubhouse', 
     'value' => 'one' 
    ), 
     'two' => array ( 
     'label' => 'Dock', 
     'value' => 'two' 
    ), 
     'three' => array ( 
     'label' => 'Waterfront', 
     'value' => 'three' 
    ), 

     'four' => array ( 
     'label' => 'Golf course', 
     'value' => 'four' 
    ) 


) 
) 

) 
); 


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 '<div 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 'text': 
      echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" size="30" style="width:97%" />', '<br />', $field['desc']; 
      break; 
     case 'textarea': 
      echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>', '<br />', $field['desc']; 
      break; 
     case 'select': 
      echo '<select name="', $field['id'], '" id="', $field['id'], '">'; 
      foreach ($field['options'] as $option) { 
       echo '<option ', $meta == $option ? ' selected="selected"' : '', '>', $option, '</option>'; 
      } 
      echo '</select>'; 
      break; 
     case 'radio': 
      foreach ($field['options'] as $option) { 
       echo '<input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name']; 
      } 
      break; 
     case 'checkbox': 
      echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta ? ' checked="checked"' : '', ' />'; 
      break; 


// checkbox_group 
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 />'; 
} 
echo '<span class="description">'.$field['desc'].'</span>'; 
break;  

    } 
    echo  '</td><td>', 
     '</td></tr>'; 
} 
echo '</table>'; 
} 

do_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); 
    } 
} 
} 

// check autosave 
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
return $post_id; 
} 
+1

вы прочитали это? http://wp.tutsplus.com/tutorials/reusable-custom-meta-boxes-part-4-using-the-data/ – Mark

+0

Привет, Марк, да, я читал его снова и снова, но не понимаю, как разделить каждый блок. –

ответ

0
$some_var = get_post_meta($post->ID, 'name_of_post_meta_data_here', true); 

echo $some_var; 

ли эта помощь? Прочтите ссылку Отметить, хотя.

EDIT

$some_var 

Дайте ему имя, как $ валюты, $ адрес ... это может быть то, что вы хотите.

get_post_meta($post->ID), 

Это означает, что он получает метаданные от текущего поста.

'name_of_post_meta_data_here', true); 

Здесь вы говорите, что ему нужно вставить в переменную, так что созданный вами мета-ящик. Истина заключается в том, что она выводит строку, false для массива.

И чем вы можете повторить его, как:

<?php echo $some_var; ?> 

Я думаю, вы должны проверить Advanced Custom Fields или Pods Framework, они делают именно то, что вы хотите, и вам нужно меньше PHP знания, чтобы справиться с этим. Я не герой PHP, поэтому я могу связать =)

+0

Я еще не очень хорошо понимаю варны. Может быть, с этим я могу разделить блоки? –

+0

Не могли бы вы объяснить, как использовать переменные, и если это поможет мне отображать блоки в бэкэнде и интерфейсе? –

+0

Привет, см. Редактирование. – Kortschot

Смежные вопросы