First, this post follows this forum-discussion about disabling any modification of taxonomies where one solution was to remove the standard-taxonomy-input-boxes and insert a new, personal inputbox with a drop-down-menu (i only wanted "male" OR "female" to be selected as taxonomy-term).
So, this is the code we are talking about:
add_meta_box( $this->plugin_short.REGISTERED_POSTTYPE.'metas', __( 'Detailed Group Information'), array( &$this,'assoc_posttype_metabox_inner'), REGISTERED_POSTTYPE, 'normal', 'high');
function assoc_posttype_metabox_inner ($post, $meta_box) {
...
<select name="tax_input[<?= $taxonomy ?>]" id="tax-input-<?= $taxonomy ?>">
<?php foreach(array(__('Male'), __('Female')) as $g): ?>
<option <?php echo ($g == get_terms_to_edit( $post->ID, $taxonomy))?'selected':'' ?> ><?php echo $g; ?></option>
<?php endforeach; ?>
</select>
...
}
I get a normal dropbox with both "Male" and "Female". I can save the costum post type. But I am stuck how I could ask the core functionalities to save my taxonomies.
I tracked down tax_input and found this code of the definition $tax_input online. Each Element of tax_input[] should be adapted here.
If I follow save_post I get to the function where it calls all registered hooks - apparently the function to save a post is called wp_insert_post(...). On line 2345 in my wp-includes/post.php I find following code:
// new-style support for all custom taxonomies
if ( !empty($tax_input) ) {
foreach ( $tax_input as $taxonomy => $tags ) {
$taxonomy_obj = get_taxonomy($taxonomy);
if ( is_array($tags) ) // array = hierarchical, string = non-hierarchical.
$tags = array_filter($tags);
if ( current_user_can($taxonomy_obj->cap->assign_terms) )
wp_set_post_terms( $post_ID, $tags, $taxonomy );
}
}
Therefore I assumed, each element of $tax_input would be managed here to get inserted. But: there is no insert.
Is the name-declaration of my dropdown correct or do I have to add additional attributes or special id-names to get this dropdown-menu recognized?
What else am I missing?