Recently i worked on site that needed some modification to the category edit screen in order to display a different image for each category page. So Today I am going to explain about to create extra field into category edit section.
we need to do is add the extra fields to the category edit form using the hook edit_category_form_fields and we use a simple function that will print out the extra fields.
Here is the code , Paste this code in your function.php file of your active child theme (or theme).
term_id; $cat_meta = get_option( "category_$t_id"); ?>
As you can see, we added new fields and all of them are in an array Cat_meta[key] because it is the only way to create one row in the options table to save all of the category’s extra fields instead of a row for each field.
Next we need to save the extra fields in to the database once a user submits the category edit form and we do that using "updated_category" with a function that will run through each of the submitted fields and insert them to the database using the update_option function, like this:
add_action ( 'updated_category', 'save_extra_category_fileds'); // save extra category extra fields callback function function save_extra_category_fileds( $term_id ) { if ( isset( $_POST['Cat_meta'] ) ) { $t_id = $term_id; $cat_meta = get_option( "category_$t_id"); $cat_keys = array_keys($_POST['Cat_meta']); foreach ($cat_keys as $key){ if (isset($_POST['Cat_meta'][$key])){ $cat_meta[$key] = $_POST['Cat_meta'][$key]; } } //save the option array update_option( "category_$t_id", $cat_meta ); } }From the code above you can see that all of the extra fields we've added are stored in the database's options table with the name 'category_ID' , where ID is the id of the specific category we just edited and that means we can call this data in our plugins or theme files easily using the get_option function.
For example, if my category ID is 15 then my code will look like the following:
See Extra category field add in edit category section.