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?


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 '14 at 11:52
  • @AliasgerSW thats the pattern, there are some exceptions, but generally it is that way – Nicolai Jun 27 '14 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 '14 at 22:22
  • @ AliasgerSW it's made by our very own @Rarst – shea Jul 4 '14 at 6:05
  • @shea QueryPosts is retired. :-(\ – I am the Most Stupid Person Aug 8 '19 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.

  • might be the easy way to look at it, but not a very complete one – Nicolai Jun 27 '14 at 12:05
  • For sure, @Tom J Nowell♦ answer is much more concise. Much better and well explained :-) – Matt Royal Jun 27 '14 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 – Nicolai Jun 27 '14 at 12:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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