Seem to be having a few issues with this project lately so sorry for spamming questions! I needed to give the category edit page in the admin a few additional fields to allow my client to manage them better.
The extra fields I added are 'Category Features' and 'Category Applications' and the following code seems to be working as expected:
// Add custom fields to category edit pages
// the option name
define('Category_Extras', 'Category_Extras_option');
// your fields (the form)
add_filter('edit_category_form', 'Category_Extras');
function Category_Extras($tag) {
$tag_extra_fields = get_option(Category_Extras);
?>
<table class="form-table">
<tr class="form-field">
<th scope="row" valign="top"><label for="Category_Extras_Features">Category Features</label></th>
<td><textarea style="width: 97%;" cols="50" rows="5" name="Category_Extras_Features" id="Category_Extras_Features" class="tinymce"><?php echo $tag_extra_fields[$tag->term_id]['Category_Extras_Features']; ?></textarea>
<p class="description">This isn't applicable to all categories but allows additional information to be displayed on a category page.</p></td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="Category_Extras_Applications">Category Applications</label></th>
<td><textarea style="width: 97%;" cols="50" rows="5" name="Category_Extras_Applications" id="Category_Extras_Applications" class="Category_Extras_Features"><?php echo $tag_extra_fields[$tag->term_id]['Category_Extras_Applications']; ?></textarea>
<p class="description">This isn't applicable to all categories but allows additional information to be displayed on a category page.</p></td>
</tr>
</table>
<?php
}
// when the form gets submitted, and the category gets updated (in your case the option will get updated with the values of your custom fields above
add_filter('edited_terms', 'update_Category_Extras');
function update_Category_Extras($term_id) {
if($_POST['taxonomy'] == 'category'):
$tag_extra_fields = get_option(Category_Extras);
$tag_extra_fields[$term_id]['Category_Extras_Features'] = strip_tags($_POST['Category_Extras_Features']);
$tag_extra_fields[$term_id]['Category_Extras_Applications'] = strip_tags($_POST['Category_Extras_Applications']);
update_option(Category_Extras, $tag_extra_fields);
endif;
}
// when a category is removed
add_filter('deleted_term_taxonomy', 'remove_Category_Extras');
function remove_Category_Extras($term_id) {
if($_POST['taxonomy'] == 'category'):
$tag_extra_fields = get_option(Category_Extras);
unset($tag_extra_fields[$term_id]);
update_option(Category_Extras, $tag_extra_fields);
endif;
}
I'm echo'ing this out on the page as follows:
<?php $prod_features = get_option(Category_Extras); foreach($prod_features as $feature) { echo $feature['Category_Extras_Features']; } ?>
However, obviously its echoing out all the options for all the categories. Is there a different finction which would allow me to echo out the 'Category Features' for the current category? (this code is being displayed on the category.php page)
As always I'd really appreciate your help :-)
Thanks
Dave