In WordPress I am using both the_permalink() and get_permalink() functions, but I cannot get any difference in the output of both functions. What is the difference between both functions?


3 Answers 3


the_permalink echos out the permalink of the current post to the frontend.

get_permalink however returns it as a variable, but does not echo it out. You can also pass a post ID to it if you want the permalink of another post.

the_permalink is equivalent to:

echo get_permalink();

Which is very close to what it actually does. This is the implementation of the_permalink:

function the_permalink() {
    echo esc_url( apply_filters( 'the_permalink', get_permalink() ) );
  • 3
    It means all the functions like the_ID() and get_ID() also have same differences like this. Sorry but i am new to wordpress that's why asking
    – AliasgerSW
    Jun 27, 2014 at 11:52
  • @AliasgerSW thats the pattern, there are some exceptions, but generally it is that way Jun 27, 2014 at 12:07
  • @AliasgerSW when in doubt, look at the code. QueryPosts is a great site for looking up the source code of WordPress functions.
    – shea
    Jul 3, 2014 at 22:22
  • @ AliasgerSW it's made by our very own @Rarst
    – shea
    Jul 4, 2014 at 6:05
  • @shea QueryPosts is retired. :-(\ Aug 8, 2019 at 12:32

If you look at the WordPress Codex on this you will see that get_permalink() is there for use outside the loop. the_permalink() is for use within the loop. That’s the easiest way to look at it.

  • 1
    might be the easy way to look at it, but not a very complete one Jun 27, 2014 at 12:05
  • For sure, @Tom J Nowell♦ answer is much more concise. Much better and well explained :-)
    – Matt Royal
    Jun 27, 2014 at 13:29

the_permalink() is used in posts loops, like the_title(). Read more about loops in The Loop.

get_permalink() can be used in loops or outside the loops. In the loops, the function returns (not echo) the current post permalink. But outside loops, it requires a post ID.

For example:

echo get_permalink( 1 );

This will display the current page permalink:

echo get_permalink();
  • 1
    actually it doesn't require an ID outside the loop Jun 27, 2014 at 12:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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