Don't like ads? PRO users don't see any ads ;-)
Guest

custom course type, taxonomy, fields

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