WordPress.org

Ready to get started?Download WordPress

Forums

[resolved] first wordpress custom post type (1 post)

  1. tiaanswart
    Member
    Posted 1 year ago #

    Ok here goes...

    I'm new to php and wordpress been working on it for about 4 months and taught myself quite a bit...

    I am trying to develop a new theme so far I have done everything correctly without errors...

    However i am now trying to create a new custom post type names portfolio using the tutorial on the below page:

    http://teamtreehouse.com/blog/create-your-first-wordpress-custom-post-type

    i did everything as explained in the tutorial and added 2 extra fields "Image Url" and "Month" my final code looks like this in my dev site:

    /*******************************
     Custom Post Type - Portfolio
    ********************************/
    
    add_action('init', 'portfolio_register');
    
    function portfolio_register() {
    
    	$labels = array(
    		'name' => _x('My Portfolio', 'post type general name'),
    		'singular_name' => _x('Portfolio Item', 'post type singular name'),
    		'add_new' => _x('Add New', 'portfolio item'),
    		'add_new_item' => __('Add New Portfolio Item'),
    		'edit_item' => __('Edit Portfolio Item'),
    		'new_item' => __('New Portfolio Item'),
    		'view_item' => __('View Portfolio Item'),
    		'search_items' => __('Search Portfolio'),
    		'not_found' =>  __('Nothing found'),
    		'not_found_in_trash' => __('Nothing found in Trash'),
    		'parent_item_colon' => ''
    	);
    
    	$args = array(
    		'labels' => $labels,
    		'public' => true,
    		'publicly_queryable' => true,
    		'show_ui' => true,
    		'query_var' => true,
    		'menu_icon' => get_stylesheet_directory_uri() . '/images/portfolio/portfolio.png',
    		'rewrite' => true,
    		'capability_type' => 'post',
    		'hierarchical' => false,
    		'menu_position' => null,
    		'supports' => array('title','editor','thumbnail')
    	  ); 
    
    	register_post_type( 'portfolio' , $args );
    
        flush_rewrite_rules();
    }
    
    register_taxonomy("Skills", array("portfolio"), array("hierarchical" => true, "label" => "Skills", "singular_label" => "Skill", "rewrite" => true));
    
    add_action("admin_init", "admin_init");
    
    function admin_init(){
      add_meta_box("year_completed-meta", "Year Completed", "year_completed", "portfolio", "side", "low");
      add_meta_box("month_completed-meta", "Month Completed", "month_completed", "portfolio", "side", "low");
      add_meta_box("image_url-meta", "Image Url", "image_url", "portfolio", "normal", "low");
      add_meta_box("credits_meta", "Design & Build Credits", "credits_meta", "portfolio", "normal", "low");
    }
    
    function year_completed(){
      global $post;
      $custom = get_post_custom($post->ID);
      $year_completed = $custom["year_completed"][0];
      ?>
      <label>Year:</label>
      <input name="year_completed" value="<?php echo $year_completed; ?>" />
      <?php
    }
    
    function month_completed(){
      global $post;
      $custom = get_post_custom($post->ID);
      $month_completed = $custom["month_completed"][0];
      ?>
      <label>Month:</label>
      <input name="month_completed" value="<?php echo $month_completed; ?>" />
      <?php
    }
    
    function image_url(){
      global $post;
      $custom = get_post_custom($post->ID);
      $image_url = $custom["image_url"][0];
      ?>
      <p><label>Image Url:</label><br />
      <textarea cols="150" rows="1" name="image_url"><?php echo $image_url; ?></textarea></p>
      <?php
    }
    
    function credits_meta() {
      global $post;
      $custom = get_post_custom($post->ID);
      $designers = $custom["designers"][0];
      $developers = $custom["developers"][0];
      $producers = $custom["producers"][0];
      ?>
      <p><label>Designed By:</label><br />
      <textarea cols="150" rows="2" name="designers"><?php echo $designers; ?></textarea></p>
      <p><label>Built By:</label><br />
      <textarea cols="150" rows="2" name="developers"><?php echo $developers; ?></textarea></p>
      <p><label>Produced By:</label><br />
      <textarea cols="150" rows="2" name="producers"><?php echo $producers; ?></textarea></p>
      <?php
    }
    
    add_action('save_post', 'save_details');
    
    function save_details(){
      global $post;
    
      update_post_meta($post->ID, "year_completed", $_POST["year_completed"]);
      update_post_meta($post->ID, "month_completed", $_POST["month_completed"]);
      update_post_meta($post->ID, "image_url", $_POST["image_url"]);
      update_post_meta($post->ID, "designers", $_POST["designers"]);
      update_post_meta($post->ID, "developers", $_POST["developers"]);
      update_post_meta($post->ID, "producers", $_POST["producers"]);
    }
    
    add_action("manage_posts_custom_column",  "portfolio_custom_columns");
    add_filter("manage_edit-portfolio_columns", "portfolio_edit_columns");
    
    function portfolio_edit_columns($columns){
      $columns = array(
        "cb" => "<input type='checkbox' />",
        "title" => "Portfolio Title",
        "description" => "Description",
        "year" => "Year Completed",
        "month" => "Month Completed",
        "skills" => "Skills",
      );
    
      return $columns;
    }
    
    function portfolio_custom_columns($column){
      global $post;
    
      switch ($column) {
        case "description":
          the_excerpt();
          break;
        case "year":
          $custom = get_post_custom();
          echo $custom["year_completed"][0];
          break;
        case "month":
          $custom = get_post_custom();
          echo $custom["month_completed"][0];
          break;
        case "skills":
          echo get_the_term_list($post->ID, 'Skills', '', ', ','');
          break;
      }
    }

    When creating a new portfolio item, the portfolio item is not displayed when visiting the permalink...

    I then enabled the wp debug and got the below error:

    Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in C:\Sites\site\wp-includes\functions.php on line 2825

    On the same subject my breadcrums is also not working now...

    I get the below error for breadcrumbs:

    Notice: Undefined offset: 0 in C:\Sites\site\wp-content\themes\theme\functions.php on line 834 Catchable fatal error: Object of class WP_Error could not be converted to string in C:\Sites\site\wp-content\themes\theme\functions.php on line 835

    The functions.php breadcrumbs code is refered to is:

    } elseif ( is_single() ) {
          $cat = get_the_category(); $cat = $cat[0];
          echo '<li>' .get_category_parents($cat, FALSE, '<li>'); //fails here this is line 835
          the_title(); echo' <strong><span style="font-size : 10px;">* YOU ARE CURRENTLY HERE!</span></strong></li>';
          echo $currentAfter;

    Please someone help!! I am going insane here...

Topic Closed

This topic has been closed to new replies.

About this Topic