<?php
/*
Plugin Name: Course Post Types
*/
/* Content Types */
add_action('init', 'post_type_courses');
function post_type_courses() {
register_post_type(
'course',
array('label' => __('Courses'),
'singular_label' => __('Course'),
'description' => __('Individual course data'),
'public' => true,
'show_ui' => true,
'register_meta_box_cb' => 'course_meta_boxes',
'supports' => array(
'title',
'editor',
'author',
'excerpts',
'custom-fields',
'revisions',)
)
);
register_taxonomy_for_object_type('college', 'course');
}
/* Taxonomies */
add_action('init', 'create_course_series_tax');
register_activation_hook( __FILE__, 'activate_course_series_tax' );
function activate_course_series_tax() {
create_course_series_tax();
$GLOBALS['wp_rewrite']->flush_rules();
}
function create_course_series_tax() {
register_taxonomy(
'college',
'course',
array(
'label' => __('Colleges'),
'singular_label' => __('College'),
'hierarchical' => true,
)
);
}
/* Custom Fields */
add_action( 'save_post', 'save_course_meta_data' );
function course_meta_boxes() {
add_meta_box( 'course_code_meta', __('Course Code'), 'course_code_meta_box', 'course', 'normal', 'high' );
add_meta_box( 'instructor_meta', __('Instructor'), 'instructor_meta_box', 'course', 'normal', 'high' );
}
function course_code_meta_box() {
global $post;
if ( function_exists('wp_nonce_field') ) wp_nonce_field('course_code_nonce', '_course_code_nonce');
?>
<label for="_course_code">Course Code (e.g. ENGL 101)</label>
<input type="text" name="_course_code"
value="<?php echo wp_specialchars(stripslashes(get_post_meta($post->ID, '_course_code', true)), 1); ?>" />
<?php
}
function instructor_meta_box() {
global $post;
if ( function_exists('wp_nonce_field') ) wp_nonce_field('instructor_nonce', '_instructor_nonce');
?>
<label for="_instructor_name">Name</label>
<input type="text" name="_instructor_name"
value="<?php echo wp_specialchars(stripslashes(get_post_meta($post->ID, '_instructor_name', true)), 1); ?>" />
<label for="_instructor_email">Email</label>
<input type="text" name="_instructor_email"
value="<?php echo wp_specialchars(stripslashes(get_post_meta($post->ID, '_instructor_email', true)), 1); ?>" />
<?php
}
function save_course_meta_data( $post_id ) {
global $post;
// ignore autosaves
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;
// check nonces
check_admin_referer('course_code_nonce', '_course_code_nonce');
check_admin_referer('instructor_nonce', '_instructor_nonce');
// check capabilites
if ( 'course' == $_POST['post_type'] && !current_user_can( 'edit_post', $post_id ) )
return $post_id;
// save fields
if (empty($_POST['_course_code'])) {
$storedcode = get_post_meta( $post_id, '_course_code', true );
delete_post_meta($post_id, '_course_code', $storedcode);
}
else
update_post_meta($post_id, '_course_code', $_POST['_course_code']);
if (empty($_POST['_instructor_name'])) {
$storedname = get_post_meta( $post_id, '_instructor_name', true );
delete_post_meta($post_id, '_instructor_name', $storedname);
}
else
update_post_meta($post_id, '_instructor_name', $_POST['_instructor_name']);
if (empty($_POST['_instructor_email'])) {
$storedemail = get_post_meta( $post_id, '_instructor_email', true );
delete_post_meta($post_id, '_instructor_email', $storedemail);
}
else
update_post_meta($post_id, '_instructor_email', $_POST['_instructor_email']);
}
?>