Bien que vous deviez ajouter une validation, cette action ne semble pas être compliquée pour la version actuelle de WordPress.
Fondamentalement, vous avez besoin de deux étapes pour ajouter un champ personnalisé à un type de publication personnalisé:
- Créez une métabox contenant votre champ personnalisé
- Enregistrez votre champ personnalisé dans la base de données
Ces étapes sont décrites globalement ici: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
Exemple:
Ajoutez un champ personnalisé appelé "fonction" à un type de publication personnalisé appelé "préfixe-membres de l'équipe".
Ajoutez d'abord la métabox:
function prefix_teammembers_metaboxes( ) {
global $wp_meta_boxes;
add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high');
}
add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );
Si vous ajoutez ou modifiez un "prefix-teammembers", le add_meta_boxes_{custom_post_type}
hook est déclenché. Voir http://codex.wordpress.org/Function_Reference/add_meta_box pour la add_meta_box()
fonction. Dans l'appel ci - dessus add_meta_box()
est - prefix_teammembers_metaboxes_html
un rappel pour ajouter votre champ de formulaire:
function prefix_teammembers_metaboxes_html()
{
global $post;
$custom = get_post_custom($post->ID);
$function = isset($custom["function"][0])?$custom["function"][0]:'';
?>
<label>Function:</label><input name="function" value="<?php echo $function; ?>">
<?php
}
Dans la deuxième étape, vous avez votre champ personnalisé dans la base de données. Lors de l'enregistrement, le save_post_{custom_post_type}
crochet est déclenché (depuis la version 3.7, voir: /programming/5151409/wordpress-save-post-action-for-custom-posts ). Vous pouvez accrocher ceci pour enregistrer votre champ personnalisé:
function prefix_teammembers_save_post()
{
if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new?
global $post;
update_post_meta($post->ID, "function", $_POST["function"]);
}
add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );