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:
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.
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.