Ajouter un champ personnalisé à la catégorie
-
-
duplicationpossible de [Desexemples d'ajout de champspersonnalisés à l'éditeur de catégories?] (http://wordpress.stackexchange.com/questions/6549/any-examples-of-adding-custom-fields-to-the-category-editor)possible duplicate of [Any examples of adding custom fields to the category editor?](http://wordpress.stackexchange.com/questions/6549/any-examples-of-adding-custom-fields-to-the-category-editor)
- 0
- 2011-02-08
- Jan Fabry
-
Voici unefeuille detriche quej'utilisepourfaire cela.Il contient les crochetset filtres d'actionpertinents dans une courte liste. http://www.charlestonsw.com/adding-custom-fields-to-the-wordpress-category-interface/Here is a cheat sheet I use when doing this. It has the relevant action hooks & filters in one short list. http://www.charlestonsw.com/adding-custom-fields-to-the-wordpress-category-interface/
- 0
- 2013-02-03
- Lance Cleveland
-
3 réponses
- votes
-
- 2016-06-29
Depuis Wordpress 4.4, add_term_meta () ,le update_term_meta () et get_term_meta () ont été ajoutées. Cela signifie que le codefournipar MxmastaMillspeut êtremis àjourpour utiliser une approchebeaucoupmoinspiratée.
Voicimamise àjour. Iln'y a qu'un seul champ carje voulais ajouter untitrepersonnalisé,mais celafonctionnera de lamêmemanièrepourtous les champs que vous souhaitez ajouter.
function addTitleFieldToCat(){ $cat_title = get_term_meta($_POST['tag_ID'], '_pagetitle', true); ?> <tr class="form-field"> <th scope="row" valign="top"><label for="cat_page_title"><?php _e('Category Page Title'); ?></label></th> <td> <input type="text" name="cat_title" id="cat_title" value="<?php echo $cat_title ?>"><br /> <span class="description"><?php _e('Title for the Category '); ?></span> </td> </tr> <?php } add_action ( 'edit_category_form_fields', 'addTitleFieldToCat'); function saveCategoryFields() { if ( isset( $_POST['cat_title'] ) ) { update_term_meta($_POST['tag_ID'], '_pagetitle', $_POST['cat_title']); } } add_action ( 'edited_category', 'saveCategoryFields');
As of Wordpress 4.4, the add_term_meta(), the update_term_meta() and get_term_meta() functions have been added. This means that the code as provided by MxmastaMills can be updated to use a far less hacky approach.
Here is my update of it. There is only one field as I wanted to add a custom title, but it'll work the same for all the fields you want to add.
function addTitleFieldToCat(){ $cat_title = get_term_meta($_POST['tag_ID'], '_pagetitle', true); ?> <tr class="form-field"> <th scope="row" valign="top"><label for="cat_page_title"><?php _e('Category Page Title'); ?></label></th> <td> <input type="text" name="cat_title" id="cat_title" value="<?php echo $cat_title ?>"><br /> <span class="description"><?php _e('Title for the Category '); ?></span> </td> </tr> <?php } add_action ( 'edit_category_form_fields', 'addTitleFieldToCat'); function saveCategoryFields() { if ( isset( $_POST['cat_title'] ) ) { update_term_meta($_POST['tag_ID'], '_pagetitle', $_POST['cat_title']); } } add_action ( 'edited_category', 'saveCategoryFields');
-
Peu de choses ànoter: dans le hook `edited_category`,`tag_ID` sera dans letableau `$ _POST`,pas dans le` $ _GET`.Deplus,`add_term_meta` ajouteraen fait unenouvelleentrée au lieu de remplacer unepossible ancienne.Utilisezplutôt `update_term_meta`.Few things to note: in the `edited_category` hook, `tag_ID` will be in the `$_POST` array, not in the `$_GET`. Also `add_term_meta` will actually add a new entry instead of overriding a possible old one. Use `update_term_meta` instead.
- 2
- 2016-10-02
- Martin Dimitrov
-
@MartinDimitrov Pourriez-vous corriger la réponse de luke-simmonsen cliquant sur lebouton Modifier?De cettefaçon,tout lemondepeut utiliser lemeilleur code disponible,même quine codepastrèsbien (concepteurici!).Je vous remercie!@MartinDimitrov Could you fix luke-simmons's answer by clicking on edit button? This way everyone can use the best code available, even who does not code very well (designer here!). Thank you!
- 0
- 2016-11-08
- Hugo
-
Iln'enregistrepas les données sous laformeIt doesn't save the data in the form
- 1
- 2017-05-11
- Dev
-
@Devilenregistre les données,ilne les affichetout simplementpas àmoins que vousne changiez $ _POSTen $ _GETen deuxième ligne.@Dev it does save data, it just don't show it unless you change $_POST to $_GET in second line.
- 0
- 2018-08-24
- banesto
-
- 2018-01-14
Ce codefonctionne:
add_action ( 'category_edit_form_fields', function( $tag ){ $cat_title = get_term_meta( $tag->term_id, '_pagetitle', true ); ?> <tr class='form-field'> <th scope='row'><label for='cat_page_title'><?php _e('Category Page Title'); ?></label></th> <td> <input type='text' name='cat_title' id='cat_title' value='<?php echo $cat_title ?>'> <p class='description'><?php _e('Title for the Category '); ?></p> </td> </tr> <?php }); add_action ( 'edited_category', function( $term_id ) { if ( isset( $_POST['cat_title'] ) ) update_term_meta( $term_id , '_pagetitle', $_POST['cat_title'] ); });
This code works:
add_action ( 'category_edit_form_fields', function( $tag ){ $cat_title = get_term_meta( $tag->term_id, '_pagetitle', true ); ?> <tr class='form-field'> <th scope='row'><label for='cat_page_title'><?php _e('Category Page Title'); ?></label></th> <td> <input type='text' name='cat_title' id='cat_title' value='<?php echo $cat_title ?>'> <p class='description'><?php _e('Title for the Category '); ?></p> </td> </tr> <?php }); add_action ( 'edited_category', function( $term_id ) { if ( isset( $_POST['cat_title'] ) ) update_term_meta( $term_id , '_pagetitle', $_POST['cat_title'] ); });
-
C'estmoinsmaladroit que l'autreet je viens de le vérifier avec WordPress 5.2.2This is less clumsy than the other one and I just verified it with WordPress 5.2.2
- 0
- 2019-07-25
- nico gawenda
-
- 2011-02-07
Paul Menard a donné unexemple de créationet d'utilisation dutermeméta dans sonblog ...
Métapersonnaliséepour lesnouvellestaxonomies dans WordPress 3.0 .Iln'y apas d'exemple de création de latable DB ou de vérification que les variables
$_POST
sont définies,vous devrez doncfaire cespetites choses vous-même,mais cela ressemble à unebase de code décentepour construire dessusde ... :)Paul Menard provided an example of how to create and use term meta in his blog...
Custom meta for new taxonomies in WordPress 3.0.There's no example of creating the DB table or checking
$_POST
vars are set, so you'll need to do those little things yourself, but it looks like a decent code base to build on top of ... :)
Je souhaite ajouter des champspersonnalisés à une certaine catégorie. Une catégoriene contient que les champs suivants:
Nom:
Slug:
Parent:
Description:
Puisquej'ai un site de sériestélévisées,je veux ajouter des champs supplémentaires,je veux quelque chose comme ça,lorsqueje crée unenouvelle catégorie (Catégorie=Série)
Nom:
Artiste:
Année:
Tapez:
Genre:
Résumé:
Slug:
Parent:
Description:
Et ainsi de suite ...
Avez-vous de l'aide? Merci d'avance.