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"]);
}
?>