Guest

custom course type

By: a guest on Mar 19th, 2010  |  syntax: PHP  |  size: 3.49 KB  |  hits: 168  |  expires: Never
download  |  raw  |  embed  |  report abuse
This paste has a previous version, view the difference. Copied
  1. <?php
  2. /*
  3. Plugin Name: Course Post Types
  4. */
  5.  
  6. /* Content Types */
  7.  
  8. add_action('init', 'post_type_courses');
  9.  
  10. function post_type_courses() {
  11.         register_post_type(
  12.                 'course',
  13.                 array('label' => __('Courses'),
  14.                                 'description' => __('Individual course data'),
  15.                         'public' => true,
  16.                         'show_ui' => true,
  17.                                 'register_meta_box_cb' => 'course_meta_boxes',
  18.                         'supports' => array(
  19.                                                         'title',
  20.                                                         'editor',
  21.                                                         'author',
  22.                                     'excerpts',
  23.                                     'custom-fields',
  24.                                     'revisions',)
  25.                            )
  26.                  );
  27.         register_taxonomy_for_object_type('college', 'course');
  28. }
  29.  
  30. /* Taxonomies */
  31.  
  32. add_action('init', 'create_course_series_tax');
  33. register_activation_hook( __FILE__, 'activate_course_series_tax' );
  34.  
  35. function activate_course_series_tax() {
  36.         create_course_series_tax();
  37.         $GLOBALS['wp_rewrite']->flush_rules();
  38. }
  39.  
  40. function create_course_series_tax() {
  41.                 register_taxonomy(
  42.                 'college',
  43.                 'course',
  44.                 array(
  45.                         'label' => __('Colleges'),
  46.                         'singular_label' => __('College'),
  47.                         'hierarchical' => true,
  48.                 )
  49.         );
  50. }
  51.  
  52. /* Custom Fields */
  53.  
  54. add_action( 'save_post', 'save_course_meta_data' );
  55.  
  56. function course_meta_boxes() {
  57.         add_meta_box( 'course_code_meta', __('Course Code'), 'course_code_meta_box', 'course', 'normal', 'high' );
  58.         add_meta_box( 'instructor_meta', __('Instructor'), 'instructor_meta_box', 'course', 'normal', 'high' );
  59. }
  60.  
  61. function course_code_meta_box() {
  62.         global $post;
  63.         if ( function_exists('wp_nonce_field') ) wp_nonce_field('course_code_nonce');
  64. ?>
  65.         <label for="_course_code">Course Code (e.g. ENGL 101)</label>
  66.         <input type="text" name="_course_code"
  67.                 value="<?php echo wp_specialchars(stripslashes(get_post_meta($post->ID, '_course_code', true)), 1); ?>" />
  68. <?php
  69. }
  70.  
  71. function instructor_meta_box() {
  72.         global $post;
  73.         if ( function_exists('wp_nonce_field') ) wp_nonce_field('instructor_nonce');
  74. ?>
  75.         <label for="_instructor_name">Name</label>
  76.         <input type="text" name="_instructor_name"
  77.                 value="<?php echo wp_specialchars(stripslashes(get_post_meta($post->ID, '_instructor_name', true)), 1); ?>" />
  78.         <label for="_instructor_email">Email</label>
  79.         <input type="text" name="_instructor_email"
  80.                 value="<?php echo wp_specialchars(stripslashes(get_post_meta($post->ID, '_instructor_email', true)), 1); ?>" />
  81. <?php
  82. }
  83.  
  84. function save_course_meta_data( $post_id ) {
  85.         global $post;
  86.  
  87.         // ignore autosaves
  88.         if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;
  89.  
  90.         // check nonces
  91.         check_admin_referer('course_code_nonce');
  92.        
  93.         // check capabilites
  94.         if ( 'course' == $_POST['post_type'] && !current_user_can( 'edit_post', $post_id ) )
  95.                 return $post_id;
  96.                        
  97.         // save fields
  98.         if (empty($_POST['_course_code'])) {
  99.                 $storedcode = get_post_meta( $post_id, '_course_code', true );
  100.                 delete_post_meta($post_id, '_course_code', $storedcode);
  101.         }
  102.         else
  103.                 update_post_meta($post_id, '_course_code', $_POST['_course_code']);
  104.        
  105.         if (empty($_POST['_instructor_name'])) {
  106.                 $storedname = get_post_meta( $post_id, '_instructor_name', true );
  107.                 delete_post_meta($post_id, '_instructor_name', $storedname);
  108.         }
  109.         else
  110.                 update_post_meta($post_id, '_instructor_name', $_POST['_instructor_name']);
  111.        
  112.         if (empty($_POST['_instructor_email'])) {
  113.                 $storedemail = get_post_meta( $post_id, '_instructor_email', true );
  114.                 delete_post_meta($post_id, '_instructor_email', $storedemail);
  115.         }
  116.         else
  117.                 update_post_meta($post_id, '_instructor_email', $_POST['_instructor_email']);
  118. }
  119. ?>