Wordpress Пользовательский тип записи + метабокс не сохраняет данные

Когда я сохраняю сообщение, данные в метабоксе не сохраняются в базе данных... где ошибка?

Мой код находится здесь: pastebin.

Спасибо!


person aquanat    schedule 30.04.2013    source источник


Ответы (1)


На самом деле вы объявили свой массив $rest_custom_meta_fields внутри функции restaurant_data_form и пытаетесь использовать его в функции save_restaurant_custom_meta, в этом случае массив выходит за рамки функции, поэтому foreach ($rest_custom_meta_fields as $field) не работает.

Чтобы решить эту проблему, вы можете убрать массив из restaurant_data_form, просто объявите array прямо перед функцией restaurant_data_form, например

$rest_custom_meta_fields = array(  
    array(  
        'label'=> 'Address',  
        'desc'  => 'Plugin use it to get map',  
        'id'    => $prefix.'text_address',  
        'type'  => 'text'  
    ),
    ...
);

И в вашей функции restaurant_data_form

function restaurant_data_form()
{
    $prefix = 'rest_';
    global $post, $rest_custom_meta_fields;
    // ...
}

Так что это должно выглядеть примерно так (массив находится в глобальной области видимости)

$rest_custom_meta_fields = array( 
    array(...),
    ...
);
function restaurant_data_form()
{
    $prefix = 'rest_';
    global $post, $rest_custom_meta_fields;
    // ...
}

Я надеюсь, что это решит проблему. Также в конце вашего кода вы использовали

echo add_action('save_post', 'save_restaurant_custom_meta');

Удалите echo из начала оператора add_action(...).

person The Alpha    schedule 30.04.2013