How to add custom field to custom taxonomy in 4.4

admin2025-06-02  2

I have a custom taxonomy for cities, and would like to have this available as a custom field to be able to access it using the iOS Workflow app. Considering the changes in 4.4 what should I do if I want to have a custom field for location to be able to use in the Workflow app?

I found this page titled, "Adding Custom Meta Fields to Taxonomies": / which notes:

With WordPress 4.4, there will be a native “terms metadata” table in WordPress, so this is no longer a necessary or valid method of adding customer metadata to terms.

See here for more information: /

My custom taxonomy is:

    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 );

}

I have a custom taxonomy for cities, and would like to have this available as a custom field to be able to access it using the iOS Workflow app. Considering the changes in 4.4 what should I do if I want to have a custom field for location to be able to use in the Workflow app?

I found this page titled, "Adding Custom Meta Fields to Taxonomies": https://pippinsplugins/adding-custom-meta-fields-to-taxonomies/ which notes:

With WordPress 4.4, there will be a native “terms metadata” table in WordPress, so this is no longer a necessary or valid method of adding customer metadata to terms.

See here for more information: https://make.wordpress/core/2015/09/04/taxonomy-term-metadata-proposal/

My custom taxonomy is:

    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 );

}
Share Improve this question edited Jun 15, 2020 at 8:21 CommunityBot 1 asked Nov 29, 2015 at 6:50 abaloneabalone 1211 silver badge2 bronze badges 1
  • I'd recommend you to wait for the 4.4 release, as its not yet released. But if you have hurry and can apply the new method after being updated, @bainternet has a TaxMeta Class, ready to use, and it's easy. There are free plugins available for Taxonomy Meta. I've an article explaining everything, but pardon me, my article is in Bengali. But waiting for 4.4 would be the wisest decision. :) – Mayeenul Islam Commented Nov 29, 2015 at 7:03
Add a comment  | 

1 Answer 1

Reset to default 1

You can implement this in two ways to add meta boxes through plugin or wordpress predefined hooks

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

  **OR**

Add the following code in functions.php in your theme

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 );
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1748858526a314308.html

最新回复(0)