Как создать Пользовательское Мета-поле с полями ввода Имени/значения администратора пользователя?
Я изучил множество учебных пособий о том, как создавать/добавлять пользовательские мета-поля с помощью функции add_meta_box()
Wordpress. Я не могу найти ни одного примера, где в готовом мета-поле есть возможность для пользователя-администратора вводить обе пары ключ/значение, такие как Пользовательские поля?
ИЗМЕНИТЬ: Удален URL-адрес ссылки на плагин, так как недостаточно очков репутации:
Я хочу добавить эту возможность в свои собственные пользовательские мета-поля и в WebDevStudios/Пользовательские метабоксы и поля для полей мета-поля плагина WordPress.
Чтобы уточнить, я хочу создать мета-поле, в которое пользователи-администраторы могут добавлять имя и значение - как показано на этом изображении, взятом из мета-поля собственных пользовательских полей WP:
Изменить 19.06.14:
Мое понимание Custom Fields
было неверным при запросе на переднем конце:
printf( '<pre>%s</pre>', var_export( get_post_meta($post->ID,"my_custom_filed_key"), true ) );
Я вижу, что my_custom_field_key
создает массив индексов:
array (
0 => 'val 1',
1 => 'val 2',
2 => 'val 3',
)
Я предполагаю, кто я такой попытка достичь - это ассоциативный массив?
array (
'my key name 1' => 'my val 1',
'my key name 2' => 'my val 2',
'my key name 3' => 'my val 3',
)
Вот функциональная часть моего кода add_meta_box
:
function my_meta_boxes($post) {
add_meta_box(
'my_meta', // Unique ID
esc_html__( 'Reviews', 'example' ), // Title
'my_meta_box', // Callback function
'my-post', // Admin page (or post type)
'side', // Context
'default' // Priority
);
}
/* Display the post meta box. */
function my_meta_box() {
wp_nonce_field( basename( __FILE__ ), 'my_post_nonce' );
$meta = get_post_custom($post->ID);
$meta['my_meta'] = maybe_unserialize($meta['my_meta'][0]);
?>
<table style="width:100%;">
<tr style="width:100%;">
<td><textarea style="width:90%;" rows="1" name="my_meta[]"> <?php echo $meta['my_meta'][0] ?></textarea></td>
</tr>
<tr style="width:100%;">
<td><textarea style="width:90%;" rows="1" name="my_meta[]"> <?php echo $meta['my_meta'][1] ?></textarea></td>
</tr>
<tr style="width:100%;">
<td><textarea style="width:90%;" rows="1" name="my_meta[]"> <?php echo $meta['my_meta'][2] ?></textarea></td>
</tr>
</table>
<?php }
Мне интересно, если add_meta_box
$ callbacks_args помог бы мне здесь, но я еще не полностью понял это?
Спасибо.
1 answers
Чтобы помочь вам понять, как работают формы: они добавляются в массив $_POST
с помощью аргумента полей формы name
.
<input type="text" name="foo" value="Fooo!" />
Приведет к
$_POST (array) =>
foo => Fooo!
В то время как
<input type="text" name="foo[bar]" value="Bar." />
<input type="text" name="foo[baz]" value="Baz." />
Приведет к
$_POST (array) =>
foo => (array) =>
bar => Bar.
baz => Baz.
И так далее.