25

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

4 Answers 4

23

Inside of your loop you can do:


global $post;

echo $post->post_name;

52

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

19

Outside the loop:

<?php
$post_id = 11;
$post = get_post($post_id); 
$slug = $post->post_name;
?> 
2

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;

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.