Edit

Wordpress Custom Post Types

Subject to

Adds custom post type called "Reviews"

<?php
function create_post_type(){
  register_post_type('review',
    array(
      'labels'=>array(
        'name'=>__('Reviews'),
        'singular_name'=>__('Review')
      ),
      'public'=>true,
      'has_archive'=>true,
      'capabilities'=>array(
          'edit_post'=>'edit_review',
          'edit_posts'=>'edit_reviews',
          'publish_posts'=>'publish_review',
          'read_post'=>'read_review',
      ),
    )
  );
}
add_action('init','create_post_type');
?>

Add abilities to "Reviews" post type

<?php
function add_theme_caps(){
    $subscribers=get_role('subscriber');
    $subscribers->add_cap('edit_review');
    $subscribers->add_cap('edit_reviews');
    $subscribers->add_cap('publish_review');
    $subscribers->add_cap('read_review');
    $admins=get_role('administrator');
    $admins->add_cap('edit_review');
    $admins->add_cap('edit_reviews');
    $admins->add_cap('publish_review');
    $admins->add_cap('read_review');
}
add_action('admin_init','add_theme_caps');
?>

Add custom fields to "Reviews" post type

<?php
add_action('admin_init','add_review_metas');
function add_review_metas(){
  add_meta_box('review_rating-meta','Rating','review_rating','review','normal','low');
}
function review_rating(){
  global $post;
  $custom=get_post_custom($post->ID);
  $review_rating=$custom['review_rating'][0];
    for($x=1;$x<6;$x++){
        echo('<input');
        if($x==$review_rating) echo(' checked="checked"');
        echo(' type="radio" name="review_rating" id="review_rating_'.$x.'" value="'.$x.'"/><label for="review_rating_'.$x.'">'.$x.'</label>'."\n");

    }
}
add_action('save_post','save_details');
function save_details(){
  global $post;
  update_post_meta($post->ID,'review_rating',$_POST["review_rating"]);
}
?>