[wp-hackers] 2 Questions: $_REQUEST equivalent and using GET in mod_rewrite

DD32 wordpress at dd32.id.au
Wed Aug 29 01:06:14 GMT 2007


This seems to come up quite a bit, and its definately challenging for  
people when they first try to use it.
I've recycled some of my own code into a test plugin that shows how to use  
the Rewrite engine a bit better:

http://dd32.id.au/files/wordpress/test-rewrite.php

By just uploading and activating it, it allows this: (without touching  
anything else in WP, no pages defined etc)
http://dd32.id.au/artist/
http://dd32.id.au/artist/Freddy/
http://dd32.id.au/artist/a/

Query vars are Escaped strings though, So this:
http://dd32.id.au/artist/Oh'John/
Results in this:
Plugin for Artist: Oh\\\\\\\'John
(Why there are so many slashes i'm not sure)

while http://dd32.id.au/artist/Oh"John/
Would be: Plugin for Artist: Oh\"John

> How can I get /artists/x/ to translate to artists.php?id=x or whatever.
By the sounds of it, you've developed the standalone app not quite how  
you'd write a WP plugin.
My suggestion would be to modify the code i've linked to, and instead of  
die(), you'd do something like:


add_action('template_redirect','test_template');
function test_template($arg){
     global $wp_query;
     if( !isset($wp_query->query_vars['artist']) )
         return $arg;
     if( 'index' != $wp_query->query_vars['artist'])
         $_REQUEST['id'] = $wp_query->query_vars['artist'];
     require_once('artists.php');
     die(); //We dont want WordPress to execute after the scripts run
}

Theres probably a better hook than template_redirect, but i find it works  
well, its right before any output is started so i find its a good place to  
cut in.


I hope its of use to you and others.

Cheers,
D


On Wed, 29 Aug 2007 03:01:28 +1000, Alex Andrews <awgandrews at gmail.com>  
wrote:

>> > More importantly, I want to use mod_rewrite to map onto this plugin. I
>> > know Wordpress can do this, but I am not sure how. Here is the schema
>> > I imagine, artists.php being replaced by the correct wordpress plugin
>> > hookup (some suggestion here might be helpful two)
>>
>> One of my plugins uses the following:
>>
>> function myRewrite($rules)
>>         { $rules['foo'] = 'index.php?pagename=foo'; return $rules; }
>>
>> add_filter('rewrite_rules_array', 'myRewrite');
>>
>> When the plugin is activated, you must visit
>> wp-admin/options-permalinks.php (once is sufficient) to add your slug to
>> WP's ruleset.
>>
>> Then, every request that calls /foo/* in this example, will be handled
>> by the plugin. However, this solution also requires to have a page with
>> the slug "foo". Maybe there's a better solution, but this one works for
>> me.
>
> It appears that in the Codex there is a description. It seems the
> latter example might suit my needs if adapted, but the problem is
> still input. How can I get /artists/x/ to translate to
> artists.php?id=x or whatever.
>
> http://codex.wordpress.org/Function_Reference/WP_Rewrite#Example
>
> Regards
>
> Alex
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers



-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/


More information about the wp-hackers mailing list