Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I currently have an ID of a page that I want to use its permalink as the front of a permastruct of a CPT I'm setting up.

Now I can use get_permalink() but that returns the full URL:

http://www.example.com/imapage/subpage/subsubpage

but all I want to return is imapage/subpage/subsubpage

Is there a function that can do this or do I have to device something that can subtract the non-needed part of the url?

share|improve this question
    
add comment

3 Answers 3

up vote 6 down vote accepted

There's nothing built in to return the bit you want but it should be as easy as using the home_url() function and removing it's output from the full url eg:

function get_relative_permalink( $url ) {
    return str_replace( home_url(), "", $url );
}
share|improve this answer
    
I came to the same bit of code but was hoping for some function already in core that returns it the way I want. –  Brady Nov 2 '11 at 17:29
add comment

You won't be able to use get_permalink() for that.

If you dig into the code for that function in /wp-includes/link-template.php you'll see why. After the permalink structure is parsed and prepared, the code does this:

$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );

This is performed immediately after the structure of the link is created and before anything is passed through a useful filter.

So unfortunately, you'll have to extract the non-needed part of the URL yourself. I'd recommend using the str_replace() function that @sanchothefat suggested.

share|improve this answer
add comment

$path = parse_url(get_permalink(...), PHP_URL_PATH); ... gives the URL PATH only. This is not relative to blog root but to domain. It's the absolute URI.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.