Comment ajouter des champs personnalisés à un type de publication personnalisé?
-
-
Utilisez http://wordpress.org/extend/plugins/types/Use http://wordpress.org/extend/plugins/types/
- 0
- 2012-07-30
- Ajay Patel
-
6 réponses
- votes
-
- 2011-05-13
C'estprobablementplus compliqué que vousne lepensez,j'envisagerais d'utiliser unframework:
Si vous voulez écrire le vôtre,voici quelquestutoriels décents:
This is probably more complicated than you think, I would look into using a framework:
If you want to write your own , here are some decent tutorials:
-
vraiment ce serait si dur.J'aipensé que ce serait aussi simple que d'ajouter un code de registre àmesfonctions commenous lefaisons avec lestypes demessageset lestaxonomies.really it would be that hard. I thought it would be as simple as adding a register code to my functions like we do with post types and taxonomies.
- 1
- 2011-05-13
- xLRDxREVENGEx
-
Je vais ajouter une cette réponse,mais cen'estpastrop complexe.Le lienthinkvitamin.comfait unexcellenttravailpourexpliquer comment ajouter lesmétaboxeset lesenregistrer.Le lien sltaylor.co.ukest untutorielgénial sur l'utilisation debonnespratiques de codage.Mamiseen gardeest d'êtreprudent lorsque vous utilisez le hook `save_post`.Ilest appelé à desmoments étranges.Assurez-vous que la variable WP_DEBUGest définie surtrue afin de voir leserreurspotentielles qui surviennent lors de son utilisation.I'll plus one this answer, but it's not too complex. The thinkvitamin.com link does a great job explaining how to add the metaboxes and save them. The sltaylor.co.uk link is an awesome tutorial on using some great coding practices. My word of caution is be careful when using the `save_post` hook. It's called at weird times. Make sure to have WP_DEBUG variable set to true in order to see potential errors that arise when using it.
- 1
- 2011-05-13
- tollmanz
-
Juste unemise àjour,j'ai utilisé le lienthinkvitaminet cela a énormément aidéet c'était unepromenade degâteau sur la configuration des champspersonnalisésJust an update i used the thinkvitamin link and that helped tremendously and it was a cake walk on setting up custom fields
- 2
- 2011-05-13
- xLRDxREVENGEx
-
- 2013-04-23
Ajoutez/modifiez l'argument
supports
(touten utilisantregister_post_type
)pourinclure lescustom-fields
pourpublier l'écran demodification de votretype depublicationpersonnalisé:'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', 'revisions' )
Source: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields
Add/edit the
supports
argument ( while usingregister_post_type
) to include thecustom-fields
to post edit screen of you custom post type:'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', 'revisions' )
Source: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields
-
Pouvez-vousexpliquerpourquoi celapourrait résoudre leproblème?Can you please explain why this could solve the issue?
- 2
- 2013-04-23
- s_ha_dum
-
Oui,celafonctionne. Qui atrouvé la réponse.Pouvez-vous le reprendre? Cordialement,Yes, this works. Who -1'ed the answer. Can you please take it back? Regards,
- 1
- 2013-07-25
- Junaid Qadir
-
...et alors.........?...and then.........?
- 8
- 2016-10-26
- Mark
-
- 2014-01-30
Bien que vous devriez avoir à ajouter une validation,cette actionne semblepas compliquéepour la version actuelle de WordPress.
Engros,vous avezbesoin de deux étapespour ajouter un champpersonnalisé à untype depublicationpersonnalisé:
- Créez unemétabox contenant votre champpersonnalisé
- Enregistrez votre champpersonnalisé dans labase de données
Ces étapes sont décritesglobalementici: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
Exemple:
Ajoutez un champpersonnalisé appelé "fonction" à untype demessagepersonnalisé appelé "prefix-teammembers".
Ajoutez d'abord lamé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 oumodifiez un "prefix-teammembers",le hook
add_meta_boxes_{custom_post_type}
est déclenché. Voir http://codex.wordpress.org/Function_Reference/add_meta_box pour laadd_meta_box()
fonction. Dans l'appel ci-dessus deadd_meta_box()
estprefix_teammembers_metaboxes_html
,un rappelpour ajouter votre champ deformulaire: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 champpersonnalisé dans labase de données. Lors de l'enregistrement,le hook
save_post_{custom_post_type}
est déclenché (depuis la version 3.7,voir: https://stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-posts ). Vouspouvez accrocher cecipourenregistrer votre champpersonnalisé: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' );
Although you should have to add some validation, this action does not seem to be complicated for the current version of WordPress.
Basically you need two steps to add a Custom Field to a Custom Post Type:
- Create a metabox which holds your Custom Field
- Save your Custom Field to the database
These steps are globally described here: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
Example:
Add a Custom Field called "function" to a Custom Post Type called "prefix-teammembers".
First add the metabox:
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' );
If your add or edit a "prefix-teammembers" the
add_meta_boxes_{custom_post_type}
hook is triggered. See http://codex.wordpress.org/Function_Reference/add_meta_box for theadd_meta_box()
function. In the above call ofadd_meta_box()
isprefix_teammembers_metaboxes_html
, a callback to add your form field: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 }
In the second step you have your custom field to the database. On saving the
save_post_{custom_post_type}
hook is triggered (since v 3.7, see: https://stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-posts). You can hook this to save your custom field: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' );
-
"Pourquoiprefix_teammembers_save_postest-il déclenchépar addnew?"avez-voustrouvé une réponse,je tombe également sur un déclencheur defonction supplémentaire dontje neme souvienspas?"why is prefix_teammembers_save_post triggered by add new?" have you found an answer, i am also stumbling on a extra function trigger which i can't recall?
- 0
- 2015-02-18
- alex
-
"Ajoutez un champpersonnalisé appelé 'function" à untype demessagepersonnalisé appelé'prefix-teammembers '. "Que signifie" appelé "? Lenom? Le singular_name? Le libellé? C'estpeut-être la chaîne utilisée commepremier argument dans register_post_typeOupeut-être quepeuimporte ce que c'esttant que c'est cohérent."Add a Custom Field called 'function" to a Custom Post Type called 'prefix-teammembers'." What does "called" mean? The name? The singular_name? The label? Maybe it's the string used as the first argument in the register_post_type function. Or maybe it doesn't matter what it is so long as it's consistent.
- 0
- 2019-10-07
- arnoldbird
-
- 2018-01-03
Ilexiste différentspluginspour lesméta-boîteset les champspersonnalisés.Si vous regardez unplugin qui se concentre sur les développeurs,vous devriezessayer Meta Box .Ilest légeret trèspuissant.
Si vous recherchez un didacticiel sur l'écriture de codepour uneméta-boîte/des champspersonnalisés,this est unbon début.C'est lapremièrepartie d'une série quipourrait vous aider à affiner le codepour le rendrefacile à étendre.
There are various plugins for custom meta boxes and custom fields. If you look at a plugin that focuses on developers, then you should try Meta Box. It's lightweight and very powerful.
If you're looking for a tutorial on how to write code for a meta box / custom fields, then this is a good start. It's the first part of a series that might help you refine the code to make it easy to extend.
-
- 2020-08-12
Je sais que cette questionest ancienne,maispourplus d'informations sur le sujet
WordPress a un supportintégrépour les champspersonnalisés.Si vous avez untype depublicationpersonnalisé,tout ce dont vous avezbesoinest d'inclure des 'champspersonnalisés' dans letableau de support à l'intérieur de register_post_type comme répondupar @kubante
Notez que cette optionest également disponiblepour lestypes depublicationnatifstels que lespublicationset lespages dontil vous suffit de l'activer
Maintenant Ce champpersonnaliséesttrèsbasiqueet accepte une chaîne comme valeur.Dans denombreux cas c'estbien maispour les champsplus complexes,je vous conseille d'utiliser leplugin 'Advanced Custom Fields'
I know this question is old but for more info about the topic
WordPress has built-in support for custom fields. If you have a custom post type then all you need is to include 'custom-fields' inside the support array inside of register_post_type as answered by @kubante
Note that this option is also available for native post types like posts and pages you just need to turn it on
Now This custom field is very basic and accepts a string as a value. In many cases that's fine but for more complex fields, I advise that you use the 'Advanced Custom Fields' plugin
-
- 2017-10-28
// slider_metaboxes_html , function for create HTML function slider_metaboxes( ) { global $wp_meta_boxes; add_meta_box('postfunctiondiv', __('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high'); } //add_meta_boxes_slider => add_meta_boxes_{custom post type} add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );
Connaissanceparfaite
// slider_metaboxes_html , function for create HTML function slider_metaboxes( ) { global $wp_meta_boxes; add_meta_box('postfunctiondiv', __('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high'); } //add_meta_boxes_slider => add_meta_boxes_{custom post type} add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );
Perfect knowledge
D'accord,j'ai doncenregistré quelquestypes d'articlespersonnaliséset quelquestaxonomies.Maintenant,pour la vie demoi,je nepeuxpas comprendre le code dontj'aibesoinpour ajouter un champpersonnalisé àmontype depublicationpersonnalisé.
J'aibesoin d'unmenu déroulantet d'une zone detexte sur une seule ligne.Maisj'ai égalementbesoin de champs séparéspour lestypes depublication.Donc,disons que letype d'article 1 a 3 champset letype d'article 2 a 4 champsmais les champs sont différents.
Tout conseilm'aiderait à regarder le codexet àtrouver quelque chose,maisje nepeuxpas comprendre ce quej'aibesoin d'ajouter àmonfichier
functions.php