natehawkes

Portfolio CPT

Jul 16th, 2014
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.83 KB | None | 0 0
  1. <?php
  2. add_action('init', 'ccd_portfolio');
  3.  
  4. function ccd_portfolio() {
  5.  
  6.     $labels = array(
  7.         'name' => _x('Portfolio', 'post type general name'),
  8.         'singular_name' => _x('Project', 'post type singular name'),
  9.         'add_new' => _x('Add New', 'ccd_portfolio item'),
  10.         'add_new_item' => __('Add New Project'),
  11.         'edit_item' => __('Edit Project'),
  12.         'new_item' => __('New Project'),
  13.         'view_item' => __('View Project'),
  14.         'search_items' => __('Search Projects'),
  15.         'not_found' =>  __('Nothing found'),
  16.         'not_found_in_trash' => __('Nothing found in Trash'),
  17.         'parent_item_colon' => ''
  18.     );
  19.  
  20.     $args = array(
  21.         'labels' => $labels,
  22.         'public' => true,
  23.         'publicly_queryable' => true,
  24.         'show_ui' => true,
  25.         'query_var' => true,
  26.         'menu_icon' => get_stylesheet_directory_uri() . '/images/icons/plugins/portfolio.png',
  27.         'capability_type' => 'post',
  28.         'hierarchical' => false,
  29.         'menu_position' => null,
  30.         'supports' => array('title', 'editor', 'excerpt', 'author'),
  31.         'can_export' => true,
  32.         'show_in_menu' => true,
  33.         'has_archive' => true,
  34.         'rewrite' => array('slug' => 'work')
  35.       );
  36.  
  37.     register_post_type( 'portfolio' , $args );
  38.     flush_rewrite_rules();
  39. }
  40.  
  41. add_action("admin_init", "ccdport_admin_init");
  42.  
  43. function ccdport_admin_init(){
  44.   add_meta_box("mb_ccdport_details", "Project Details", "ccdport_details", "portfolio", "normal", "high");
  45.   add_meta_box("mb_ccdport_client", "Client", "ccdport_client", "portfolio", "side", "high");
  46. }
  47.  
  48. add_action( 'admin_enqueue_scripts', 'ccdport_add_datepicker' );
  49. function ccdport_add_datepicker(){
  50.   wp_enqueue_script( 'jquery-ui-datepicker' );
  51.   wp_enqueue_style('jquery-datepicker-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
  52. }
  53. function ccdport_details(){
  54.   global $post;
  55.   $custom = get_post_custom($post->ID);
  56.   $preview_url = $custom['preview_url'][0];
  57.   $start_date = $custom['start_date'][0];
  58.   $end_date = $custom['end_date'][0];
  59. ?>
  60.   <p><label>Preview URL: <strong>http://</strong>
  61.     <input type="text" size="35" name="preview_url" value="<?php echo $preview_url; ?>" /></p>
  62.   <p><label>Start date:</label>
  63.     <input id="startDate" type="text" size="15" class="DatePicker" name="start_date" value="<?php echo $start_date; ?>" /> &nbsp;
  64.     <label>End date:</label>
  65.     <input id="endDate" type="text" size="15" class="DatePicker" name="end_date" value="<?php echo $end_date; ?>" /></p>
  66.     <script>
  67.       jQuery(document).ready(function() {
  68.         jQuery('input.DatePicker').datepicker({
  69.           dateFormat : 'dd-mm-yyyy'
  70.         });
  71.       });
  72.     </script>
  73. <?php
  74. }
  75.  
  76. function ccdport_client(){
  77.   global $post;
  78.   $custom = get_post_custom($post->ID);
  79.   $client = $custom['project_client'][0];
  80.   $name = $custom['client_name'][0];
  81.   $args = array(
  82.     'post_type' => 'clients',
  83.     'posts_per_page' => -1,
  84.     'orderby' => 'name',
  85.     'order' => 'ASC'
  86.   );
  87. ?>
  88.   <p><label>Client name</label></p>
  89.   <input type="text" name="client_name" value="<?php echo $name; ?>" />
  90.   <p><label>Organisation</label></p>
  91. <?php
  92.   $query = new WP_Query( $args );
  93.   if ( $query->have_posts() ){
  94.     echo '<select name="project_client">';
  95.     while ( $query->have_posts() ){
  96.       $query->the_post();
  97.       $slug = $post->post_name;
  98.       echo '<option value="'.$slug.'" '.selected($slug, $client).'>'.get_the_title().' ('.$slug.')</option>';
  99.     }
  100.     echo '</select>';
  101.   }
  102.   else { echo '<p>There are currently no clients registered</p>'; }
  103. }
  104.  
  105. add_action('save_post', 'ccdport_save_details');
  106.  
  107. function ccdport_save_details(){
  108.   global $post;
  109.  
  110.   update_post_meta($post->ID, "client_name", $_POST["client_name"]);
  111.   update_post_meta($post->ID, "project_client", $_POST["project_client"]);
  112.   update_post_meta($post->ID, "portfolio", $_POST["portfolio"]);
  113.   update_post_meta($post->ID, "preview_url", $_POST["preview_url"]);
  114. }
  115. ?>
Advertisement
Add Comment
Please, Sign In to add comment