treehouse : what would you like to learn today?
Web Design Web Development iOS Development

[Solved] Displaying custom post type titles in WP?

  • I have been looking and looking and just cannot find an answer nor figure this out. I've learned a lot from here and Digging Into Wordpress so I thought this was a good place to ask. I've already asked this on 2 other forums with no answers.

    So basically I want to do something in the vein of what is in this screenshot from this post Justin Tadlock's site. I want my custom post type titles to automatically display with that individual post's title. If you look at the screenshot they're in grey. So for example it'd say "Movie" before a post type of "Movie" followed by the movie's name and "Book" before a post type of "Book", etc.

    Could anyone give me some insight into this?
  • Holy hell this took a lot of time to find!

    <?php $post_type = get_post_type_object( get_post_type($post) );
    echo $post_type->label ; ?>
  • Interesting question. I've never done this before, but I had to figure out a way. I don't know if this is the right way, but it works for me:
    I used get_post_type()

    <?php $post_type=get_post_type();
    echo $post_type; ?> //this outputs the post type name, e.g. 'movie'
    <?php the_title(); ?> //this is the title of the post

    This outputs the post type in lowercase, so I applied a class and used CSS text-transform to capitalize.
    I couldn't find a tag that output the name or label that was already capitalized.
  • Oooh...nice Doc. I didn't see yours before I posted :-)
  • Thanks I'd been searching for this for a while!
  • I had posted this same question over in Justin Tadlock's forums before I posted here and he just responded with a different solution that I find a little more customizable. His code is this:
    <?php

    $type = get_post_type();

    if ( 'movie' == $type )
    echo 'Movie: ';
    elseif ( 'book' == $type )
    echo 'Book: ';

    ?>


    So you just keep adding elseif's for you're various types and what you want them to say, so if I want a movie post type to output Film instead of Movie or maybe I want it to say Movie Review it will do it. This also stops regular posts from displaying with "post" before them.

    I've been trying to figure this out on my own for so long and within 24 hours got 3 solutions. Wow. Well that's one hurdle.
  • Hmmmm. His solution makes sense, but if you update the Label this just means you'll need to update it in two places instead of one.

    Furthermore, if you are going to use that code in multiple places in the site, you'll be updating a single word even more - which of course takes away from the wonderful dynamicness of the whole system.
  • Haley and The Doc, thank you for sharing your code(s). I have been looking all day for this solution.