Массив из формы - метаданные Wordpress - PullRequest
0 голосов
/ 01 июня 2011

Я получил пользовательский тип записи с формой для хранения некоторых данных (имя, URL) для отображения в шаблоне.

Что я хочу знать, это как я могу сохранить эти значения в массиве ?

Пример моего кода:

<? function files_metadata(){  
        global $post; 
        $custom = get_post_custom($post->ID);  
        $name = $custom["name"][0];
        $url = $custom["url"][0];

        echo '<input type="hidden" name="files_metadata" id="files_metadata" value="' .wp_create_nonce('files_m'). '" />'; ?>  

<label>Name: </label><br/>
<input id="name" name="name" value="<?php echo $name; ?>" />
<label>Url: </label><br/>
<input id="url" name="url" value="<?php echo $url; ?>" />

<? function save_meta_files($post_id) {  
        if (!wp_verify_nonce($_POST['files_metadata'], 'files_m')) return $post_id;
        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;

        update_post_meta($post_id, "name", $_POST["url"]);   
        update_post_meta($post_id, "url", $_POST["url"]); 
    }  

add_action('save_post', 'save_meta_files'); ?> 

К этому я хочу добавить что-то вроде ...

$url = $custom["url"][0];
$url2 = $custom["url"][1];
$url3 = $custom["url"][2];

<input id="url" name="url[0]" value="<?php echo $url; ?>" />
<input id="url2" name="url[1]" value="<?php echo $url2; ?>" />
<input id="url3" name="url[2]" value="<?php echo $url3; ?>" />

update_post_meta($post_id, "url", $_POST["url"][0]); 
update_post_meta($post_id, "url2", $_POST["url"][1]); 
update_post_meta($post_id, "url3", $_POST["url"][2]); 

... но на самом деле это работает ...

1 Ответ

2 голосов
/ 01 июня 2011

Переданный массив будет сериализован в строку: http://codex.wordpress.org/Function_Reference/update_post_meta

update_post_meta(
    $post_id,
    'files_metadata',
    array(
        'name1' => $_POST['name1'],
        'url1' => $_POST['url1']
        'name2' => $_POST['name2'],
        'url2' => $_POST['url2']
    )
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...