get_post_permalink( int|WP_Post $post, bool $leavename = false, bool $sample = false ): string|false

Retrieves the permalink for a post of a custom post type.

Parameters

$postint|WP_Postoptional
Post ID or post object. Default is the global $post.
$leavenamebooloptional
Whether to keep post name.

Default:false

$samplebooloptional
Is it a sample permalink.

Default:false

Return

string|false The post permalink URL. False if the post does not exist.

More Information

Basic Usage

<?php get_post_permalink( $id, $leavename, $sample ); ?>

See also get_permalink() .

Source

function get_post_permalink( $post = 0, $leavename = false, $sample = false ) {	global $wp_rewrite;	$post = get_post( $post );	if ( ! $post ) {	return false;	}	$post_link = $wp_rewrite->get_extra_permastruct( $post->post_type );	$slug = $post->post_name;	$force_plain_link = wp_force_plain_post_permalink( $post );	$post_type = get_post_type_object( $post->post_type );	if ( $post_type->hierarchical ) {	$slug = get_page_uri( $post );	}	if ( ! empty( $post_link ) && ( ! $force_plain_link || $sample ) ) {	if ( ! $leavename ) {	$post_link = str_replace( "%$post->post_type%", $slug, $post_link );	}	$post_link = home_url( user_trailingslashit( $post_link ) );	} else {	if ( $post_type->query_var && ( isset( $post->post_status ) && ! $force_plain_link ) ) {	$post_link = add_query_arg( $post_type->query_var, $slug, '' );	} else {	$post_link = add_query_arg(	array(	'post_type' => $post->post_type,	'p' => $post->ID,	),	''	);	}	$post_link = home_url( $post_link );	}	/** * Filters the permalink for a post of a custom post type. * * @since 3.0.0 * * @param string $post_link The post's permalink. * @param WP_Post $post The post in question. * @param bool $leavename Whether to keep the post name. * @param bool $sample Is it a sample permalink. */	return apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample ); } 

Hooks

apply_filters( ‘post_type_link’, string $post_link, WP_Post $post, bool $leavename, bool $sample )

Filters the permalink for a post of a custom post type.

Changelog

VersionDescription
6.1.0Returns false if the post does not exist.
3.0.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.