Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

More of an open discussion than a question, really, because I know adding custom arguments to the post type object does work, but I'm wondering if it is technically wrong in any way.

Basically, when registering a post type:

$labels = array(
    'name' => _x('Drews', 'post type general name'),
    'singular_name' => _x('Drew', 'post type singular name'),
    'add_new' => __('Add New'),
    'add_new_item' => __('Add New Item'),
    'edit_item' => __('Edit Item'),
    'new_item' => __('New Item'),
    'view_item' => __('View Item'),
    'search_items' => __('Search Items'),
    'not_found' =>  __('No Items found'),
    'not_found_in_trash' => __('No Items found in Trash'), 
    'menu_name' => 'Archives'
);
$rewrite = array(
    'slug' => 'drews'
);
$args = array(
    'labels' => $labels,
    'public' => true,
    'show_in_menu' => true, 
    'query_var' => 'drews',
    'rewrite' => $rewrite,
    'has_archive' => true, 
    'hierarchical' => false,
    'supports' => array('title','editor','author','comments'),
    '_drew_made_this' => true
); 
register_post_type('drews',$args);

Make note of the very last line in my $args array, '_drew_made_this' set to 'true'. This allows me to condition against this in several useful ways, sort of how you would filter against '_builtin' when using get_post_types(). Like I said, I know this works because I'm using it, but is there any potential for this to break WordPress in any weird way.

share|improve this question
    
I suppose the big question is, should register_post_type be accepting custom parameters. If that's not intended behaviour for the function, i'd expect your code to stop working in future(but that may not be the case). I guess the only way to know for sure would be to backtrace that function's history and see if the function is intended to support custom args. –  t31os Apr 18 '11 at 11:50
add comment

1 Answer

up vote 2 down vote accepted

You can add as many arguments as you want to the register_post_type() $args as they are all save in $wp_post_types global in an array (ex: $wp_post_types[type] = $args), but i'm not sure if that is the best way to go since this could easily be changed in the future and then your functions will break, a better way to go would be to create your own option in the options table and use that, what i mean is that you could use get_post_types() and save them as an array in a type => $args manner and that way you are not depending on the core functionality to stay in the current state. Hope this makes scene.

share|improve this answer
    
I see what you mean, and will be looking into updating my project to follow this safeguard. It would definitely not be good if I lost the current ability to add arguments. –  Drew Gourley Apr 18 '11 at 3:47
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.