WordPress url_to_postid en url shortners

  10 February 2015 20:02:46        GetString()    ,  No Comments.
PHP Code
PHP Code

WordPress is een mooi CMS systeem met een hoop leuke functies. Zo ook de url_to_postid functie. Deze is bedoeld om aan de hand van de url van een pagina een post id te vinden. Heel mooi en nuttig, tot we een url shortner service gebruiken ( tinyurl, dlvr.it etc) Dan werkt deze functie niet meer.

Voordeel van wordpress is dat je op functies van wordpress kan inhaken. Met onderstaande functie gaan we met curl op zoek naar de url die achter de url shortner service zit, en voer deze vervolgens aan de url_to_postid functie. Hierdoor werkt deze functie ook met url shortner services:

function filter_shortner($url) { 
	if (function_exists('curl_init')) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
		curl_setopt($ch, CURLOPT_HEADER, TRUE); // We'll parse redirect url from header.
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE); // We want to just get redirect url but not to follow it.
		$response = curl_exec($ch);
		preg_match_all('/^Location:(.*)$/mi', $response, $matches);
		curl_close($ch);
		if (!empty($matches[1])) { 
			return trim($matches[1][0]) ;
		} else { 
			return $url;
		}
	} else {
		return $url; 
	}
}  

add_filter( 'url_to_postid', 'filter_shortner',0);

Deze snippet draait nu op RTV8.nl samen met een FB comment import plugin die deze snippet ook heeft ingebouwd.

Post Reply

Leave a Reply

Your email address will not be published. Required fields are marked *