Je travaille sur un site en ce moment où je dois enregistrer plusieurs types de métadonnées pour un type de publication personnalisé.
À l’heure actuelle, j’ai une saisie de texte qui enregistre sans problème, mais j’ai du mal à faire en sorte que le champ sélectionné soit identique.
C'est la fonction qui sort le champ de sélection:
function kwi_department_input() {
// Define function to create meta box for team member department.
global $post;
echo '<input type="hidden" name="teammeta_noncename" id="teammeta_noncename" value="' . wp_create_nonce(plugin_basename(__FILE__)) . '" />';
$department = get_post_meta($post->ID, '_department', true); ?>
<select name="_department" id="_department">
<option value="Directors" <?php selected($department, 'Directors'); ?>>Directors</option>
<option value="Finance / Admin" <?php selected($department, 'Finance / Admin'); ?>>Finance / Admin</option>
<option value="Customer Service Team" <?php selected($department, 'Customer Service Team'); ?>>Customer Service Team</option>
<option value="Commercial Team" <?php selected($department, 'Commercial Team'); ?>>Commercial Team</option>
</select>
<?php }
Et c'est la fonction qui sauvegarde toutes les données:
function kwi_save_team_meta($post_id) {
if( !wp_verify_nonce( $_POST['teammeta_noncename'], plugin_basename(__FILE__) )) {
return $post_id;
}
if( !current_user_can( 'edit_post', $post_id ) ) {
return $post_id;
}
$team_meta = array(
'_department' => $_POST['_department'],
'_languages' => $_POST['_languages'] // Languages is the text input that is saving with no issue.
);
foreach($team_meta as $key => $value) {
if(get_post_meta($post_id, $key, FALSE)) {
update_post_meta($post_id, $key, $value);
} else {
add_post_meta($post_id, $key, $value);
}
if(!$value) {
delete_post_meta($post_id, $key);
}
}
}
Toute indication sur ce que je fais mal serait très appréciée.
Ok, j'ai résolu le problème moi-même.
Il s'avère que l'attribut name="_department"
a été dupliqué dans un autre champ en conflit avec mon champ de sélection. Ma sélection enregistre très bien maintenant que j'ai édité cela.