wp_force_plain_post_permalink( WP_Post|int|null $post = null, bool|null $sample = null ): bool
Determine whether post should always use a plain permalink structure.
Parameters
-
$post
WP_Post|int|null Optional -
Post ID or post object. Defaults to global $post.
Default:
null
-
$sample
bool|null Optional -
Whether to force consideration based on sample links.
If omitted, a sample link is generated if a post object is passed with the filter property set to'sample'
.Default:
null
Return
bool Whether to use a plain permalink structure.
Source
File: wp-includes/link-template.php
.
View all references
function wp_force_plain_post_permalink( $post = null, $sample = null ) {
if (
null === $sample &&
is_object( $post ) &&
isset( $post->filter ) &&
'sample' === $post->filter
) {
$sample = true;
} else {
$post = get_post( $post );
$sample = null !== $sample ? $sample : false;
}
if ( ! $post ) {
return true;
}
$post_status_obj = get_post_status_object( get_post_status( $post ) );
$post_type_obj = get_post_type_object( get_post_type( $post ) );
if ( ! $post_status_obj || ! $post_type_obj ) {
return true;
}
if (
// Publicly viewable links never have plain permalinks.
is_post_status_viewable( $post_status_obj ) ||
(
// Private posts don't have plain permalinks if the user can read them.
$post_status_obj->private &&
current_user_can( 'read_post', $post->ID )
) ||
// Protected posts don't have plain links if getting a sample URL.
( $post_status_obj->protected && $sample )
) {
return false;
}
return true;
}
Changelog
Version | Description |
---|---|
5.7.0 | Introduced. |