Checkboxes are a bit different than text inputs. The main changes below are in the save function and with handling the checked
attribute. The value of show_category
will be yes if it’s been checked or an empty string for unchecked.
Keep in mind that if the show_category
meta was never saved it will be unset, so take that into account in your code.
/* Custom Field for Categories.
======================================== */
// Add new term page
function my_taxonomy_add_meta_fields( $taxonomy ) { ?>
<div class="form-field term-group">
<label for="show_category">
<?php _e( 'Show Category', 'codilight-lite' ); ?> <input type="checkbox" id="show_category" name="show_category" value="yes" />
</label>
</div><?php
}
add_action( 'category_add_form_fields', 'my_taxonomy_add_meta_fields', 10, 2 );
// Edit term page
function my_taxonomy_edit_meta_fields( $term, $taxonomy ) {
$show_category = get_term_meta( $term->term_id, 'show_category', true ); ?>
<tr class="form-field term-group-wrap">
<th scope="row">
<label for="show_category"><?php _e( 'Show Category', 'codilight-lite' ); ?></label>
</th>
<td>
<input type="checkbox" id="show_category" name="show_category" value="yes" <?php echo ( $show_category ) ? checked( $show_category, 'yes' ) : ''; ?>/>
</td>
</tr><?php
}
add_action( 'category_edit_form_fields', 'my_taxonomy_edit_meta_fields', 10, 2 );
// Save custom meta
function my_taxonomy_save_taxonomy_meta( $term_id, $tag_id ) {
if ( isset( $_POST[ 'show_category' ] ) ) {
update_term_meta( $term_id, 'show_category', 'yes' );
} else {
update_term_meta( $term_id, 'show_category', '' );
}
}
add_action( 'created_category', 'my_taxonomy_save_taxonomy_meta', 10, 2 );
add_action( 'edited_category', 'my_taxonomy_save_taxonomy_meta', 10, 2 );