How to change permalink structure for custom post type and it’s taxonomies?

Ok I think I might have a solution. I have no idea if this is the right way to accomplish this, but as for now it’s the only thing that seems to work. add_filter(‘rewrite_rules_array’, ‘mmp_rewrite_rules’); function mmp_rewrite_rules($rules) { $newRules = array(); $newRules[‘portfolio/(.+)/(.+?).html$’] = ‘index.php?project=$matches[2]’; $newRules[‘portfolio/(.+)/?$’] = ‘index.php?project_category=$matches[1]’; return array_merge($newRules, $rules); } add_filter(‘request’, ‘mmp_rewrite_request’); function mmp_rewrite_request($vars) … Read more

What is the difference between get_post_permalink and get_permalink?

The get_post_permalink() funciton fetches the link to a post depending on its “permanent” link plus your custom rewrite rules that changes ?p=123 into for e.g. my-beautiful-sunday-diary. The get_permalink() function is more “basic” but as well more versatile in what it does: For a post_type of page, it uses get_page_link() attachment, it uses get_attachment_link() post, it … Read more

Add .html (dot HTML) extension to custom post types

This seem to work: Create the rewrite rules like post-type/post-name.html. You can use arrays to create the rules for just some set of post types instead of doing it for all of them. add_action( ‘rewrite_rules_array’, ‘rewrite_rules’ ); function rewrite_rules( $rules ) { $new_rules = array(); foreach ( get_post_types() as $t ) $new_rules[ $t . ‘/([^/]+)\.html$’ … Read more

Permalink format: singular or plural

There’s a simple rule that I follow (it’s hard to explain, so I’ll give examples): http://example.com/categories/ <– This plural form should mean that the page shows a list of all the categories in use on your site. Similarly, if it’s “authors” (as in http://example.com/authors/), I’d expect the page to show a list (with or without … Read more

Performance of my permalink structure?

You can check by looking at the size of the rewrite_rules option in the database. If it’s small (which I believe it should with this structure), you’re not using verbose rules. By contrast, if you see several lines per static page, you’re using verbose rules and it’s not good.

Where, When, & How to Properly Flush Rewrite Rules Within the Scope of a Plugin?

The best place to flush rewrite rules is on plugin activation/deactivation. function myplugin_activate() { // register taxonomies/post types here flush_rewrite_rules(); } register_activation_hook( __FILE__, ‘myplugin_activate’ ); function myplugin_deactivate() { flush_rewrite_rules(); } register_deactivation_hook( __FILE__, ‘myplugin_deactivate’ ); See the codex article Apologies in advance, I didn’t make it all the way through your question, so this is a … Read more

Why is “/page/2/” not working?

Found the answer: After a looong day debugging thru wordpress core, I managed to solve this issue. Basicly, you CANT have a PAGE and a CUSTOM POST TYPE with the same name. If you do, the permalink rewrite rules will get confused and trigger a 404. A very simple solution I’m using is: The page … Read more

Get default permalink structure from pretty URL’s

First of all I have to say that wp_get_referer() is not 100% reliable because it relies on $_SERVER[‘HTTP_REFERER’] that is not 100% reliable, from php.net docs: The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set … Read more