web-dev-qa-db-fra.com

Ajouter un champ personnalisé à la taxonomie personnalisée dans 4.4

J'ai une taxonomie personnalisée pour les villes et j'aimerais l'avoir disponible en tant que champ personnalisé pour pouvoir y accéder à l'aide de l'application iOS Workflow. Compte tenu des modifications apportées en 4.4, que dois-je faire si je souhaite avoir un champ personnalisé pour l'emplacement à utiliser dans l'application de flux de travail?

J'ai trouvé cette page intitulée "Ajout de champs méta personnalisés aux taxonomies": https://pippinsplugins.com/adding-custom-meta-fields-to-taxonomies/ qui indique:

Avec WordPress 4.4, il y aura une table native de "métadonnées de termes" dans WordPress. Ce n'est donc plus une méthode nécessaire ou valide pour ajouter des métadonnées de client aux termes.

Voir ici pour plus d'informations: https://make.wordpress.org/core/2015/09/04/taxonomy-term-metadata-proposal/

Ma taxonomie personnalisée est:

    add_action( 'init', 'loc_taxonomy', 0 );
    function loc_taxonomy() {

    $labels = array(
        'name'                       => _x( 'Locations', 'Taxonomy General Name', 'text_domain' ),
        'singular_name'              => _x( 'Location', 'Taxonomy Singular Name', 'text_domain' ),
        'menu_name'                  => __( 'Locations', 'text_domain' ),
        'all_items'                  => __( 'All Locations', 'text_domain' ),
        'parent_item'                => __( 'Parent Location', 'text_domain' ),
        'parent_item_colon'          => __( 'Parent Location:', 'text_domain' ),
        'new_item_name'              => __( 'New Location Name', 'text_domain' ),
        'add_new_item'               => __( 'Add New Location', 'text_domain' ),
        'edit_item'                  => __( 'Edit Location', 'text_domain' ),
        'update_item'                => __( 'Update Location', 'text_domain' ),
        'separate_items_with_commas' => __( 'Separate locations with commas', 'text_domain' ),
        'search_items'               => __( 'Search locations', 'text_domain' ),
        'add_or_remove_items'        => __( 'Add or remove locations', 'text_domain' ),
        'choose_from_most_used'      => __( 'Choose from the most used locations', 'text_domain' ),
        'not_found'                  => __( 'Not Found', 'text_domain' ),
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => true,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
    );
    register_taxonomy( 'loc', array( 'post' ), $args );

}
2
abalone

Vous pouvez implémenter cela de deux manières pour ajouter des méta-boîtes à l'aide de points d'ancrage prédéfinis plugin ou wordpress.

https://wordpress.org/plugins/taxonomy-metadata/

  **OR**

Ajoutez le code suivant dans functions.php dans votre thème

function mj_taxonomy_add_custom_meta_field() {
        ?>
        <div class="form-field">
            <label for="term_meta[class_term_meta]"><?php _e( 'Add Class', 'MJ' ); ?></label>
            <input type="text" name="term_meta[class_term_meta]" id="term_meta[class_term_meta]" value="">
            <p class="description"><?php _e( 'Enter a value for this field','MJ' ); ?></p>
        </div>
    <?php
    }
add_action( 'product_cat_add_form_fields', 'mj_taxonomy_add_custom_meta_field', 10, 2 );





 function mj_taxonomy_edit_custom_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[class_term_meta]"><?php _e( 'Add Class', 'MJ' ); ?></label></th>
            <td>
                <input type="text" name="term_meta[class_term_meta]" id="term_meta[class_term_meta]" value="<?php echo esc_attr( $term_meta['class_term_meta'] ) ? esc_attr( $term_meta['class_term_meta'] ) : ''; ?>">
                <p class="description"><?php _e( 'Enter a value for this field','MJ' ); ?></p>
            </td>
        </tr>
    <?php
    }

add_action( 'product_cat_edit_form_fields','mj_taxonomy_edit_custom_meta_field', 10, 2 );



function mj_save_taxonomy_custom_meta_field( $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];
                }
            }
            // Save the option array.
            update_option( "taxonomy_$t_id", $term_meta );
        }

    }  
add_action( 'edited_product_cat', 'mj_save_taxonomy_custom_meta_field', 10, 2 );  
add_action( 'create_product_cat', 'mj_save_taxonomy_custom_meta_field', 10, 2 );
1
shishir mishra