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.

Currently my permalink setting is /paper/%postname%/.

I am developing a plugin, so the following is done during the activation.

I am programatically adding a new custom-post-type called 'meta', like this (at 'init'):

register_post_type( POST_TYPE,
  array(
  'labels' => array('menu_name' => 'meta'),
  'public' => true,
  'rewrite' => array('with_front'=>false,'slug'=>'meta','pages'=>false)
  )
);

Then in the activation I programatically added a meta post, and use get_permalink(). But I get the following url:

http://localhost/wordpress/paper/faq/

This url leads to the 'not found' page. The correct url should be:

http://localhost/wordpress/meta/faq/

In the admin meta post edit page, the displayed permalink is the correct http://localhost/wordpress/meta/faq

I also tried to flush_rewrite_rules(); before I call get_permalink(). But it didn't work.

Does anyone have any idea?

share|improve this question
    
Are you able to consistently reproduce this by creating more posts and getting wrong results from get_permalink()? –  soulseekah Mar 13 '12 at 11:15

1 Answer 1

At what stage are you registering your post type? If it's going right in the admin I'm thinking that you might be registering your post type too late. It has to be done on init to work...

Also, removing the 'pages'=>false might just fix it.

share|improve this answer
    
yes it is done in init like add_action('init', 'set_post_type_meta');, NOT inside the activation function. I tried removing it but it didn't work either. –  lulalala Sep 29 '11 at 8:48
1  
@lulalala Try adding a flush_rewrite_rules(); after registering your custom post type. –  Michael Ecklund Jun 28 '12 at 4:29

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.