Как создать Пользовательское Мета-поле с полями ввода Имени/значения администратора пользователя?


Я изучил множество учебных пособий о том, как создавать/добавлять пользовательские мета-поля с помощью функции add_meta_box() Wordpress. Я не могу найти ни одного примера, где в готовом мета-поле есть возможность для пользователя-администратора вводить обе пары ключ/значение, такие как Пользовательские поля?

ИЗМЕНИТЬ: Удален URL-адрес ссылки на плагин, так как недостаточно очков репутации:

Я хочу добавить эту возможность в свои собственные пользовательские мета-поля и в WebDevStudios/Пользовательские метабоксы и поля для полей мета-поля плагина WordPress.

Чтобы уточнить, я хочу создать мета-поле, в которое пользователи-администраторы могут добавлять имя и значение - как показано на этом изображении, взятом из мета-поля собственных пользовательских полей WP:

enter image description here

Изменить 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 помог бы мне здесь, но я еще не полностью понял это?

Спасибо.

Author: user1575949, 2014-06-15

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.

И так далее.

 1
Author: kaiser, 2014-06-19 09:26:31