[wp-hackers] Permalinks Update Hook

Rob Miller r at robm.me.uk
Mon Jun 5 17:04:09 GMT 2006

Mr.Brown wrote:
> Rob Miller <r at robm.me.uk> wrote:
>> If you filter rewrite_rules_array don't they automatically get
>> added/updated when the user updates their permalinks?
> No, I don't filter the rewrite rules, because I don't yet understand
> how they work.
> I've posted an help request in this list some months ago, I've read
> the Codex examples but I' dont' resolved :-)
> Now I'm using this function to make WP use .htaccess the old way also
> with 2.0.x versions.
> function GYO_verbose_rewrite() { // thanks to Ryan Boren ;-)
>     global $wp_rewrite;
>     $wp_rewrite->use_verbose_rules = true;
> }
> add_action('init', 'GYO_verbose_rewrite');
This is how I do it:

First, add some WP_Rewrite variables:

 * Registers our query vars so we can redirect to the library and book 
 * @param array $vars The existing array of query vars
 * @return array The modified array of query vars with our additions.
function nr_query_vars( $vars ) {
    $vars[] = 'now_reading_library';
    return $vars;
add_filter('query_vars', 'nr_query_vars');

Then add our rewrite rules:

 * Adds our rewrite rules for the library and book permalinks to the 
regular WordPress ones.
 * @param array $rules The existing array of rewrite rules we're filtering
 * @return array The modified rewrite rules with our additions.
function nr_mod_rewrite( $rules ) {
    global $wp_rewrite;
    $rules['library/?$'] = 'index.php?now_reading_library=true';
    return $rules;
add_filter('rewrite_rules_array', 'nr_mod_rewrite');

Now we can check on `init`/`template_redirect` to see if our rewrite 
variables are set and load the appropriate templates:

 * Checks to see if the library/book permalink query vars are set and, 
if so, loads the appropriate templates.
function library_init() {
    global $wp, $wpdb, $q, $query;
    if( $wp->query_vars['now_reading_library'] ) {
        // Library page:
    } else
add_action('template_redirect', 'library_init');

(Sorry for the rather verbose examples, btw)

It's pretty complex but fairly intuitive.

Incidentally, does anyone (David?) know what's happening about the 
WP_Rewrite API as discussed here[1]?

[1]: http://trac.wordpress.org/ticket/2433

Rob Miller
http://robm.me.uk/ | http://kantian.co.uk/

More information about the wp-hackers mailing list