Support » Fixing WordPress » Custom post layout?

  • Hi people,

    i’m making a site where i will need to post lots of contents, which basically have the same layout.. like name, year, category, date, place, etc etc

    So i was thinking about the to create some kind of special post page, where i have a form with all those items i need, so i can easily fill it in and press post so it appears nicely layout, so instead of editing the html manually..

    Any ideas how i can do this?

    Thanks!

Viewing 15 replies - 1 through 15 (of 20 total)
  • There are a couple of options, you could create a custom post type and then add a metabox containing the new fields that you needed to create.

    http://codex.wordpress.org/Post_Types
    http://codex.wordpress.org/Function_Reference/add_meta_box

    Another option is you could just use the default post type and use this plugin and custome fields.

    http://codex.wordpress.org/Custom_Fields
    http://wordpress.org/extend/plugins/custom-field-template/

    the second options is probably the simplest and requires the least custom code, other than programming your output template.

    Thread Starter Jonas_

    (@jonas_)

    Ok thanks, but i don’t understand how i need to format the post itself
    i think i need to use a template file like single-mypostlayout.php

    if i use the plugin custom field template.. once i press post what happens then? Do i need to store the items in the database or does this happen automatically? And how do i apply a layout? I will use a simple definition list for this and a few h3s to create sections..

    Thanks in advance!

    If you use the custom template all the database saving is done automatically all you will then have to do is figure out which template you are using and then add the code like it talks about here and wrap it in whatever html you are using

    http://codex.wordpress.org/Custom_Fields#Displaying_Custom_Fields

    I hope that makes more sense but the fact that custom templates handles all the database saving and such using the built in custom fields settings makes it much simpler.

    then on the display you could just do an if statement to see if there is something in that field that needs to be displayed.

    Thread Starter Jonas_

    (@jonas_)

    Ok that is very interesting i gonna try it soon! Thanks!

    Thread Starter Jonas_

    (@jonas_)

    But if i want a page with all posts that have key X, do i need to loop through all posts to get them? The reason why i ask this is performance.

    They say on the page $post_meta_cache contains all the posts numbers with their corresponding keys and values.

    Like a page where all posts are that all have key “place” with value “nowhere” for example..

    Is that the same way as we list items in a category? I think the posts are stored in db per category or isn’t that true??? So i will need to make for each item also a category to do this efficiently? Or am i wrong?

    No you wouldn’t you can look here. typically what i do is order by the meta_key and then once you find a post without the key you can break from the loop.

    http://codex.wordpress.org/Class_Reference/WP_Query

    posts in the db are stored separate of the categories with a key that tells us which categories are associated with a particular post.

    I hope this is what you are looking for. you could just create a page that uses a custom loop to display all the items with the matching meta.

    I have done this on several sites. Typically in relation to a rating widget when i want to show by rating order and only ones that have a rating.

    Thread Starter Jonas_

    (@jonas_)

    Ok perfect i’m going to check it out!

    Thank you very much!

    Just one more question.. the [Plan] is that the key in the meta?
    and what if i want spaces, is that possible? or do i need to use _ or – instead of spaces?

    Thread Starter Jonas_

    (@jonas_)

    anyone know that?
    and how i access them ?

    is this the best way: get_post_meta($post->ID, $key, true);
    or should i use the cache variable? $post_meta_cache[256][‘key’];

    i will use it in a the page with the full post on

    I have always used the first one get_post_meta()

    But i really don’t know the difference between the two.

    Thread Starter Jonas_

    (@jonas_)

    Ok thanks! and what about this?

    the [Plan] is that the key (=Plan?) in the meta?
    and what if i want spaces, is that possible? or do i need to use _ or – instead of spaces?

    Also im struggling to bind posts in a seperate category to a custom single post template..

    what i tried is this:

    add_action( 'init', 'create_my_post_types' );
    
    function create_my_post_types() {
    	register_post_type( 'movie_review',
    		array(
    			'labels' => array(
    				'name' => __( 'Movie Reviews' ),
    				'singular_name' => __( 'Movie Review' )
    			),
    			'public' => true,
    		)
    	);
    }

    but then i get a seperate post form, but without the custom field plugin.. so any idea how i can do that? I searched google also but they always give the above code :S

    Can anyone point me in the right direction please?

    Thanks!

    if you are going to use custom post types for something i would recommend looking over this tutorial by Justin it really good and its what i used for the first time I created custom post types.

    http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress

    I think this tutorial should hopefully answer most of your questions

    Thread Starter Jonas_

    (@jonas_)

    haha! I found that tutorial also, but the problem is that it doesnt show the custom fields for a post, it only shows them when i add a post normally.. Nor can i add a category/tags to the post, so that is basically my problem :S

    to turn on the custom fiels you would use the “supports” option and include custom-fields.

    and to add categories you would use the “taxanomies” option

    register_post_type( 'supplement',
            array(
                'labels' => array(
                    'name' => __( 'Supplement' ),
                    'singular_name' => __( 'Supplement' ),
                    'add_new' => __( 'Add New' ),
                    'add_new_item' => __( 'Add New Supplement' ),
                    'edit' => __( 'Edit' ),
                    'edit_item' => __( 'Edit Supplement' ),
                    'new_item' => __( 'New Supplement' ),
                    'view' => __( 'View Supplement' ),
                    'view_item' => __( 'View Supplement' ),
                    'search_items' => __( 'Search Supplements' ),
                    'not_found' => __( 'No products found' ),
                    'not_found_in_trash' => __( 'No supplements found in Trash' ),
                    'parent' => __( 'Parent Supplement' ),
                ),
                'public' => true,
                'hierarchical' => true,
                'menu_position' => 20,
                'supports' => array('title', 'author', 'thumbnail', 'editor', 'excerpt', 'comments', 'page-attributes', 'common', 'custom-fields'),
                'register_meta_box_cb' => 'products_meta_box',
                'taxonomies' => array('brand', 'supplement-type'),
                'rewrite' => array('slug' => 'supplements')
    
            )
        );
            register_taxonomy( 'brand', 'supplement', array('hierarchical' => true, 'label' => __('Brand'), 'show_in_nav_menus' => true, 'rewrite' => array('slug' => 'brand')));
            register_taxonomy( 'supplement-type', 'supplement', array('hierarchical' => true, 'query_var' => true, 'label' => __('Supplement Type'), 'show_in_nav_menus' => true, 'rewrite' => array('slug' => 'supplement-type')));
            register_taxonomy( 'desire', 'supplement', array('hierarchical' => true, 'label' => __('Desire'), 'show_in_nav_menus' => true, 'rewrite' => array('slug' => 'desire')));

    here is some code that i used on a site I am currently working on to build the custom post type.

    to add support for the default categories in the taxonomies option you would simply put ‘category’

    and in the supports you just make sure that the ‘custom-fields option is set

    Thread Starter Jonas_

    (@jonas_)

    Yes that seems to be working.. but you gave me a plugin, the custom field template plugin, is there a possibiliy to add that too?

    You would probably have to dig into that plugin and add your custom post type to it. I am not sure. Typically when i build a custom post type i will just build a custom meta box.

    Looking at the code for custom field template it would probably be possible to change it but it could end up being a huge headache. So I would probably just build a custom metabox.

    The only trick with those is that you will have to worry about saving your fields but its not too hard.

    http://wptheming.com/2010/08/custom-metabox-for-post-type/

    this looks like a pretty good tutorial.

Viewing 15 replies - 1 through 15 (of 20 total)
  • The topic ‘Custom post layout?’ is closed to new replies.