web-dev-qa-db-fra.com

Comment créer une méta-boîte personnalisée avec des champs de saisie d'utilisateur Nom/Valeur de l'administrateur?

J'ai effectué de nombreuses recherches sur la création/l'ajout de méta-boîtes personnalisées à l'aide de la fonction add_meta_box() Wordpress. Je ne trouve aucun exemple où la méta-boîte finie a la possibilité pour un utilisateur administrateur d'entrer les deux clés/valeur comme Custom_Fields ?

EDIT: Suppression de l'URL du lien du plug-in en raison d'un nombre insuffisant de points de représentation:

Je souhaite ajouter cette fonctionnalité à mes propres méta-boîtes personnalisées et aux champs Meta Box du plug-in WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress.

Pour clarifier, je veux créer une méta-boîte à laquelle les utilisateurs administrateurs peuvent ajouter un nom et une valeur - comme dans cette image extraite de la propre méta-zone de champs personnalisés du WP:

enter image description here

Edit 19.06.14:

Ma compréhension de Custom Fields était incorrecte, lors d'une interrogation sur le front-end:

        printf( '<pre>%s</pre>', var_export( get_post_meta($post->ID,"my_custom_filed_key"), true ) );

Je vois que my_custom_field_key produit un tableau d'index:

array (
0 => 'val  1',
1 => 'val  2',
2 => 'val  3',
)

Je suppose que ce que j'essaie de réaliser est un tableau associatif?

array (
'my key name 1' => 'my val 1',
'my key name 2' => 'my val 2',
'my key name 3' => 'my val 3',
)

Voici la partie fonction add_meta_box de mon code:

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 }

Je me demande si le add_meta_box$ callbacks_args pourrait m'aider ici, mais je ne le comprends pas encore?

Je vous remercie.

1
user1575949

Pour vous aider à comprendre le fonctionnement des formulaires: Ils ajoutent au tableau $_POST un argument name de champs de formulaire.

<input type="text" name="foo" value="Fooo!" />

produirait

$_POST (array) =>
    foo => Fooo!

tandis que

<input type="text" name="foo[bar]" value="Bar." />
<input type="text" name="foo[baz]" value="Baz." />

produirait

$_POST (array) =>
    foo => (array) =>
        bar => Bar.
        baz => Baz.

etc.

1
kaiser