Support » Plugins and Hacks » Using wp_rewrite to handle image output

Using wp_rewrite to handle image output

  • Hello there, this is my first post here, so be gentle. 😛

    I have some issues using $wp_rewrite, as the topic suggests. I’m trying to turn incoming urls lilke this one:




    To do this, I have created the following code in my plugin (Note: It’s all located inside a class):

    // added to filter "generate_rewrite_rules"
    static function generate_rewrite_rules($wp_rewrite) {
    	$wp_rewrite->rules = array_merge(
    			'file/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/?$' => 'index.php?'.self::ID.'_fileaccess=1&type=$matches[1]&name=$matches[2]'
    // ...
    // added to filter "query_vars"
    static function query_vars($public_query_vars) {
    	$public_query_vars[] = self::ID.'_fileaccess';
    	$public_query_vars[] = 'type';
    	$public_query_vars[] = 'name';
    	return $public_query_vars;
    // ...
    // added to action "init"
    static function init() {
    	// only present for testing...
    	global $wp_rewrite;
    	// This should trigger if wp_rewrite worked
    	$facheck = intval(get_query_var(self::ID.'_fileaccess'));
    	if($facheck === 1) {
    		$type = preg_replace('[^a-zA-Z0-9_]', '', get_query_var('type'));
    		$name = preg_replace('[^a-zA-Z0-9_]', '', get_query_var('name'));
    		if(!empty($type) && !empty($name)) {
    			self::fileaccess($type, $name);
    	// This will trigger if the url is entered directly, just for testing purpose
    	if(isset($_GET[self::ID.'_fileaccess'])) {
    		$facheck = intval($_GET[self::ID.'_fileaccess']);
    		if($facheck === 1) {
    			$type = preg_replace('[^a-zA-Z0-9_]', '', $_GET['type']);
    			$name = preg_replace('[^a-zA-Z0-9_]', '', $_GET['name']);
    			if(!empty($type) && !empty($name)) {
    				self::fileaccess($type, $name);

    However, it’s not working… 🙁

    Calling the url http://www.mywpsite.de/file/thumbnail/img_test_001 results in a 404 Page.

    But calling http://www.mywpsite.de/index.php/index.php?myplugin_fileaccess=1&type=thumbnail&name=img_test_001 will work correctly and deliver the image to the browser.

    To debug this mess, I did install “AskApache RewriteRules Viewer”. It shows my rule in the following categories:

    rules => index.php?WowGuild_fileaccess=1&type=$matches[1]&name=$matches[2]
    wp_rewrite_rules => index.php?WowGuild_fileaccess=1&type=$matches[1]&name=$matches[2]

    Looks fine to me…

    So… I’m kinda lost now… Any suggestions? I would be really grateful 🙂

  • The topic ‘Using wp_rewrite to handle image output’ is closed to new replies.
Skip to toolbar