I’m trying to add a custom field for categories. The custom field is a single checkbox. I can get the checkbox to show up on the forms in the create new category and edit category pages but if I check the checkbox it isn’t staying checked after saving the form.
This is the code I’m using:
/* Custom Field for Categories.
======================================== */
//Add new page
function my_taxonomy_add_meta_fields( $taxonomy ) {
?>
<div class="form-field term-group">
<label for="show_category"><?php _e( 'Show Category', 'codilight-lite' ); ?></label>
<input type="checkbox" id="show_category" name="show_category" />
</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="<?php echo $show_category; ?>" />
</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', esc_attr( $_POST['show_category'] ) );
}
}
add_action( 'created_category', 'my_taxonomy_save_taxonomy_meta', 10, 2 );
add_action( 'edited_category', 'my_taxonomy_save_taxonomy_meta', 10, 2 );
I copied this code from a tutorial I found. The original code was for a text field type custom field so I think the problem probably has to do with the checkbox settings.