17

How can I get the slug of a page or post?

19

Inside of your loop you can do:


global $post;

echo $post->post_name;

| improve this answer | |
38

Another option is getting the slug by post ID:

$slug = get_post_field( 'post_name', $post_id );

Here is more info about get_post_field https://codex.wordpress.org/Function_Reference/get_post_field

| improve this answer | |
19

Outside the loop:

<?php
$post_id = 11;
$post = get_post($post_id); 
$slug = $post->post_name;
?> 
| improve this answer | |
1

As per other answers slug is stored in post_name property. While it could be accessed directly I prefer the (underused) get_post_field() function for access post properties which have no proper API for them.

It requires post provided explicitly and doesn't default to the current one.

If you want to get slug of the post outside the loop then use:

$post_id = 20; //specify post id here
$post = get_post($post_id); 
$slug = $post->post_name;

If you want to get slug of the post from the loop then use:

global $post;
echo $post->post_name;
| improve this answer | |

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.