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.

I'm setting up a Wordpress Network and wanted all new sites to have the same permalink structure (i.e. "/%year%/%monthnum%/%postname%/"). I'm wondering if this is possible to do via hooks or hacks in functions.php, without having to rely on users to choose that structure.

share|improve this question

1 Answer 1

up vote 9 down vote accepted

You can set the permalink structure by calling on the set_permalink_structure() method of the global $wp_rewrite object.

add_action( 'init', function() {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%postname%/' );
} );

Here's a PHP < 5.3 version of the code in case you're getting errors.

function reset_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%postname%/' );
}
add_action( 'init', 'reset_permalinks' );
share|improve this answer
    
Copying and pasting your code generates an error, but the rationale does the trick! I only wonder if my question / intentions are good practice, though... –  tbuteler Oct 16 '11 at 21:26
1  
Tomas, thanks for accepting the answer. Glad to have been of help. As for good practices - I think that if your objective is to enforce and lock such a permalink structure across websites - then that's justifiable; and by 'lock' I mean that code will not allow any changes to the structure via the Admin, if that's fine then I reckon it's totally okay to do this. –  soulseekah Oct 17 '11 at 4:41
1  
It works but it cause a conflict when admin saves from permalink page (404 on posts). Then when the site loades (proccess init hook) the permalink structure changes again (404 on posts again). using $wp_rewrite->flush_rules(); solves the problem. Bad practice to use it on init and run it every time. Just visiting the permalinks page will do the tricks. –  Sisir Apr 28 '12 at 11:16
1  
The whole intention was to disable the permalinks options page, so maybe I can get away with it? –  tbuteler Apr 28 '12 at 15:08
1  
It should be called on 'after_switch_theme' or on plugin activation and be followed by 'flush_rewrite_rules()' –  csstd Oct 27 '13 at 4:27

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.