这是自定义分类法的示例,其中“课程”和自定义帖子类型为“ help_lessions ”
/*
* Set Selectbox for Custom taxonomy "courses" in admin panel
*/
function custom_meta_box() {
remove_meta_box('tagsdiv-courses', 'help_lessions', 'side');
add_meta_box('tagsdiv-courses', 'Course', 'Courses_meta_box', 'help_lessions', 'side');
}
add_action('add_meta_boxes', 'custom_meta_box');
/* Prints the taxonomy box content */
function courses_meta_box($post) {
$tax_name = 'courses';
$taxonomy = get_taxonomy($tax_name);
?>
<div class="tagsdiv" id="<?php echo $tax_name; ?>">
<div class="jaxtag">
<?php
// Use nonce for verification
wp_nonce_field(plugin_basename(__FILE__), 'courses_noncename');
$help_ids = wp_get_object_terms($post->ID, 'courses', array('fields' => 'ids'));
wp_dropdown_categories('taxonomy=courses&hide_empty=0&orderby=name&name=courses&show_option_none=Select Course&selected=' . $help_ids[0]);
?>
<p class="howto">Select your Course</p>
</div>
</div>
<?php
}
/* When the post is saved, saves our custom taxonomy */
function courses_save_postdata($post_id) {
// verify if this is an auto save routine.
// If it is our form has not been submitted, so we dont want to do anything
if (( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) || wp_is_post_revision($post_id))
return;
// verify this came from the our screen and with proper authorization,
// because save_post can be triggered at other times
if (!wp_verify_nonce($_POST['courses_noncename'], plugin_basename(__FILE__)))
return;
// Check permissions
if ('help_lessions' == $_POST['post_type']) {
if (!current_user_can('edit_page', $post_id))
return;
}
else {
if (!current_user_can('edit_post', $post_id))
return;
}
// Now, we need to find and save the data
$help_id = $_POST['courses'];
$help = ( $help_id > 0 ) ? get_term($help_id, 'courses')->slug : NULL;
wp_set_object_terms($post_id, $help, 'courses');
}
add_action('save_post', 'courses_save_postdata');