Add Custom Meta Fields in Category WordPress

Adding Custom Meta Fields to Taxonomies in WordPress
1156 Views
4.7
(257)

For add Custom Meta Field in taxonomy use following code in your current themes functions.php file.

<?php
// Add term page
add_action( 'category_add_form_fields', 'cxc_taxonomy_add_new_meta_field', 10, 2 );

function cxc_taxonomy_add_new_meta_field() {
	// this will add the custom meta field to the add new term page
	?>
	<div class="form-field">
		<label for="custom_term_meta"><?php _e( 'Custom meta field', 'cxc-codexcoach' ); ?></label>
		<input type="text" name="custom_term_meta" id="custom_term_meta" value="">
		<p class="description"><?php _e( 'Enter a value for this field','cxc-codexcoach' ); ?></p>
	</div>
	<?php
}
?>

Edit with term page

<?php
// Edit term page
add_action( 'category_edit_form_fields', 'cxc_taxonomy_edit_meta_field', 10, 2 );

function cxc_taxonomy_edit_meta_field( $term ) {

	// put the term ID into a variable
	$term_id = $term->term_id;

	// retrieve the existing value(s) for this meta field. This returns an array
	$term_meta = get_term_meta( $term_id, 'custom_term_meta', true ); ?>
	<tr class="form-field">
		<th scope="row" valign="top"><label for="custom_term_meta]"><?php _e( 'Example meta field', 'cxc-codexcoach' ); ?></label></th>
		<td>
			<input type="text" name="custom_term_meta" id="custom_term_meta" value="<?php echo ( !empty($term_meta) ) ? $term_meta  : ''; ?>">
			<p class="description"><?php _e( 'Enter a value for this field','cxc-codexcoach' ); ?></p>
		</td>
	</tr>
	<?php
}
?>

Save extra taxonomy fields

<?php
// Save extra taxonomy fields callback function.
add_action( 'edited_category', 'cxc_save_taxonomy_custom_meta', 10, 2 );  
add_action( 'create_category', 'cxc_save_taxonomy_custom_meta', 10, 2 );

function cxc_save_taxonomy_custom_meta( $term_id ) {
	if ( isset( $_POST['custom_term_meta'] ) && !empty( $_POST['custom_term_meta'] ) ) {
		update_term_meta( $term_id, 'custom_term_meta', $_POST['custom_term_meta'] );
	}
} 
?>

Use below code to show metabox values from anywhere

<?php
$terms = get_the_terms( get_the_ID() , 'category' ); // Here Specify your taxonomy name
if( !empty( $terms ) ){ ?>
	<ul>
		<?php foreach ( $terms as $term ) {
			$custom_term_meta = get_term_meta($term->term_id, 'custom_term_meta', true);
			if(!empty($custom_term_meta)) { ?>
				<li><?php echo $custom_term_meta; ?>
			<?php }  } ?>
	</ul>
<?php } ?>	

How useful was this blog?

Click on a star to rate it!

Average rating 4.7 / 5. Vote count: 257

No votes so far! Be the first to rate this blog.

Leave a comment

Your email address will not be published. Required fields are marked *