Ajout de champs méta personnalisés aux taxonomies

logo carre@4x

Lorsqu’il s’agit d’ajouter des champs méta personnalisés à une taxonomie dans WordPress, le processus nécessite généralement trois fonctions distinctes : une pour ajouter le champ à la page “Ajouter un nouveau terme”, une pour ajouter le champ à la page “Modifier le terme”, et une pour enregistrer les valeurs du champ personnalisé sur les deux pages.

Voici comment réaliser cela avec un exemple pratique :

<?/**
 * Summary.
 *
 * Description : Ajout de champs méta personnalisés aux taxonomies
 *
 * @since Version 1.0.0
 */

 // Fonction pour ajouter un champ méta personnalisé à la page "Ajouter un nouveau terme"
function jconcept_taxonomy_add_new_meta_field() {
    ?>
    <div class="form-field">
        <label for="term_meta[custom_term_meta]"><?php _e('Exemple de champ méta', 'jconcept'); ?></label>
        <input type="text" name="term_meta[custom_term_meta]" id="term_meta[custom_term_meta]" value="">
        <p class="description"><?php _e('Entrez une valeur pour ce champ', 'jconcept'); ?></p>
    </div>
    <?php
}
add_action('category_add_form_fields', 'jconcept_taxonomy_add_new_meta_field', 10, 2);

// Fonction pour ajouter un champ méta personnalisé à la page "Modifier le terme"
function jconcept_taxonomy_edit_meta_field($term) {
    $t_id = $term->term_id;
    $term_meta = get_option("taxonomy_$t_id");
    ?>
    <tr class="form-field">
        <th scope="row" valign="top"><label for="term_meta[custom_term_meta]"><?php _e('Exemple de champ méta', 'jconcept'); ?></label></th>
        <td>
            <input type="text" name="term_meta[custom_term_meta]" id="term_meta[custom_term_meta]" value="<?php echo esc_attr($term_meta['custom_term_meta']) ? esc_attr($term_meta['custom_term_meta']) : ''; ?>">
            <p class="description"><?php _e('Entrez une valeur pour ce champ', 'jconcept'); ?></p>
        </td>
    </tr>
    <?php
}
add_action('category_edit_form_fields', 'jconcept_taxonomy_edit_meta_field', 10, 2);

// Fonction pour enregistrer les valeurs du champ personnalisé
function save_taxonomy_custom_meta($term_id) {
    if (isset($_POST['term_meta'])) {
        $t_id = $term_id;
        $term_meta = get_option("taxonomy_$t_id");
        $cat_keys = array_keys($_POST['term_meta']);
        foreach ($cat_keys as $key) {
            if (isset($_POST['term_meta'][$key])) {
                $term_meta[$key] = $_POST['term_meta'][$key];
            }
        }
        update_option("taxonomy_$t_id", $term_meta);
    }
}
add_action('edited_category', 'save_taxonomy_custom_meta', 10, 2);
add_action('create_category', 'save_taxonomy_custom_meta', 10, 2);

Ces fonctions ajoutent un champ méta personnalisé à la page “Ajouter un nouveau terme” et à la page “Modifier le terme” pour la taxonomie de catégorie par défaut. Assurez-vous d’ajuster le code en fonction de votre taxonomie spécifique. Ces champs méta peuvent être utilisés pour stocker des informations personnalisées associées à chaque terme de taxonomie.